文字乱码修复方法(电脑字体乱码怎么解决)

相信大家在日常生活中,都见过类似下面的这些类似的字符串:上面这种,看起来不明所以的内容,通常被称作乱码。那么乱码是如何产生的,并且如何修复呢?我们接下来就一步步对此进行解释编码规则字符串,本质上都是一个字节一个字节的数据,连在一起存储的

相信大家在日常生活中,都见过类似下面的这些类似的字符串:

电脑字体乱码怎么解决(文字乱码修复方法)

上面这种,看起来不明所以的内容,通常被称作乱码。那么乱码是如何产生的,并且如何修复呢?我们接下来就一步步对此进行解释

编码规则

字符串,本质上都是一个字节一个字节的数据,连在一起存储的。而要将这些数据显示在屏幕上,则需要按一种编码规则进行解析。

ASCII

ASCII编码是最容易理解的。ASCII编码因为每个字符仅占用7bit,所以最多只能存储127个字符,而每个字符都有唯一的一个数字与其对应。

例如:

数字0x35在这种编码规则下,会被解析为字符5

数字0x6C在这种编码规则下,会被解析为字符l

数字0x4C在这种编码规则下,会被解析为字符L

具体对应规则,可以在网上搜索ASCII 码表查看

按照这种规则,一串hello,用16进制数据表示就是68 65 6C 6C 6F

GB2312

因为ASCII只能显示127个字符,远远不能满足中文字符的显示需求,所以中国国家标准总局于1980年发布了国家标准代码 GB 2312 标准(目前最新标准为 GB 18030)

简单来说,在这套编码规范下,每个中文字符可以由2个字节表示,例如:

啊的实际数据为0xB0 0xA1

测的实际数据为0xB2 0xE2

试的实际数据为0xCA 0xD4

同时,因为ASCII编码下每字节使用了7bit(0x00-0x7f),GB2312为了对其进行兼容,规定每个中文字符的高位字节(第一个字节)使用0xA1–0xF7的范围,避开了ASCII编码使用的区域。

也就是说,想下面的一串混用了中英文的数据,也可以正常被解析并显示出来:

电脑字体乱码怎么解决(文字乱码修复方法)

UTF-8

UTF-8可以使用1-4字节来表示字符,因为其兼容性强,可以对Unicode字符集中的所有有效编码点进行编码,是目前使用最广泛的编码标准。

与GB2312一样,UTF-8同样兼容ASCII编码。只是UTF-8比GB2312包含了更多字符,并且每种字符的字节数并不是完全固定的。由于编码规则比较复杂,这里不作具体解释,只会举例说明:

啊的实际数据为0xE5 0x95 0x8A

测的实际数据为0xE6 0xB5 0x8B

试的实际数据为0xE8 0xAF 0x95

其他编码

除了GB2312、UTF-8和ASCII编码,还有许多编码标准,他们大部分互不兼容。

存储和传输字符串数据

数据都是要进行存储和传输的

存储

微软使用BOM 头这种技术来为纯文本文件标记其编码,这样打开文件时就可以用正确的编码进行解析。

而大部分Linux不使用类似技术,所以读取后只能靠猜测,或强行指定,来进行显示。

传输

传输不仅指字符串数据在互联网上的传输,也包括了在各类函数调用过程中的传输。这类操作通常都不会带有字符编码标准的标记,一般靠直接指定编码来解决。

产生乱码

聪明的你应该已经想到了,如果一串某编码的数据,被人使用另一种编码标准进行解析,那么得出的结果几乎一定是错误的。

比如测试解析结果这几个字,我们使用UTF-8编码,得到下面16进制数据:

电脑字体乱码怎么解决(文字乱码修复方法)

如果,收到这些数据的人尝试使用GB2312编码来显示,那么结果就是我们非常熟悉的乱码了:

电脑字体乱码怎么解决(文字乱码修复方法)

上面的过程就是典型的乱码形成过程

修复乱码

乱码是否可以还原?答案是肯定的,只需要按乱码形成时的操作反过来做一遍就可以恢复了。但是有些编码中会出现?这种无法解析显示的数据,这部分数据就完全丢失了。

一般的乱码修复操作,就是把各种编码可能性都试一遍,看哪个结果可靠,那么就是原始内容。

这里推荐使用开源的工具 llcom (llcom.papapoi.com),来进行乱码恢复工作

我们用上一节生成的乱码数据作为例子,尝试修复:

电脑字体乱码怎么解决(文字乱码修复方法)

可以看到可靠的结果已经显示出来,修复成功

避免乱码

建议在写代码时统一使用UTF-8编码,这是目前互联网的最主要的编码形式

如果是资源占用紧张,但依旧需要中文显示的地方,可以考虑使用GB2312编码存储数据

久久派网发布的相关文章已登记【鲸版权】未经许可不得转载!否则本站有权进行维权!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/38514.html

(0)
nan
上一篇 2021-10-24
下一篇 2021-10-24

相关推荐

  • 无固定期限合同解除赔偿标准是如何规定的(无固定期限双倍赔偿)

    法律分析:若双方协商一致解除或者终止劳动合同,用人单位按照规定支付经济补偿金;若用人单位单方面解除或者终止劳动合同,用人单位是违法的应当按照规定支付双倍赔偿金。法律依据:《中华人民共和国劳动合同法》第四十七条经济补偿按劳动者在本单位工作的年限,每

    2022-01-12
    0
  • 引言,售后客服难做吗(售后客服累吗)

    引言蛙哥做了二十多年的售后服务工作了,有朋友会问,售后服务这项工作好做吗?这个问题回答起来可以说是一言难尽了。要让蛙哥用一句话来解释的话,那就是:“售后服务,做起来容易,做好难!”售后服务的两个层面售后服务好做吗?在蛙哥的眼中,涉及到两个层面,第一个

    2021-12-29
    0
  • 劳荣枝庭审过程反复狡辩(被害人律师说劳荣枝有非凡表演才能)

    封面新闻记者石伟杨峰发自南昌9月9日上午,江西省南昌中院经过审理,以被告人劳荣枝犯故意杀人罪、抢劫罪、绑架罪,数罪并罚,决定执行死刑,剥夺政治权利终身,并处没收个人全部财产,劳荣枝当庭表示上诉。判决书称,劳荣枝系凶案主犯,坦白供述了常

    2021-12-13 随笔
    0
  • 太平洋魔兽地图详解(最受欢迎的魔兽rpg单人)

    二战风暴v2.219正式版是一张以二战历史为题材改编而成的对抗地图,较上一版本而言,它修改了喀秋莎的攻击模型、增加了一些新的特效并强化了伞兵单位的各项属性。各类士兵,战车,飞机,战舰,快来演绎属于你的二战吧!地图信息地图名称:二战风暴v2.219正式

    2021-10-15
    0
  • 五险一金的法律解释(五险一金包括社保吗)

    五险一金,顾名思义,它包括了5种社会保险和住房公积金的待遇。5种社会保险主要包括的是职工养老保险,职工医疗保险,失业保险,工伤保险和生育保险。以后生育保险将要合并到职工医疗保险当中去,那么我们俗称的五险一金将会变成四险一金。可能有些单位,

    2021-12-14
    0
  • 用互联网在家里如何赚钱(坐家里赚钱的方法推荐)

    本来以为是一个在正常不过的春节假期,没想到这个假期特殊的让人铭记,原本七天的假期,一延就是一、两个月……,这可把哪些月光族、靠花呗过日子的人急坏了头。可办法总比困难多,这种人更是脑瓜聪明的人。家里蹲的

    2021-12-17
    0

发表回复

登录后才能评论