原来可以那么简单,字符编码的可逆问题

乱码的情况

可逆的情况

  1. 出现方框,某种字体没有这个字,就会出现方框,只需要找到有这个字的字体就行。比如“乱”字,这种字体没有这个字:
    在这里插入图片描述只需要转换其它字体就行了
    在这里插入图片描述

  2. 解码的方式和编码的方式不一样,通常字符出现“�”字符。比如:utf-8编码方式的“乱”字,以UTF-8的解码方式能够正常显示
    在这里插入图片描述但在GBK情况下显示出现乱码,本身的字符二进制编码没有变,只是这个二进制编号,在GBK编码表里面代表其它字符的编号
    在这里插入图片描述

不可逆情况

这种问题通常发生在保存文件的时候,通常这种情况下的字符显示为“?”字符。比如:GBK编码里面没有“♠”这种字符,如果强制以这种编码方式保存会自动转换成“?”字符
在这里插入图片描述强制保存后再打开,再GBK下出现一个问号,UTF-8情况下同样如此
在这里插入图片描述在这里插入图片描述此时原来的字符编码的二进制数值,早已经再保存时发生了改变,无论如何转换字符的编码,都不能找到原来的“♠”字符

总结一下

字符的编码可逆不可逆主要看保存的时候,这个字符在这个编码类型下是否有相应的编号。我们都知道ASCII编码,每一个英文字母都有相应的编号,比如“a”的编号在ASCII里面是97,所以保存“a”的时候可以以这个编码保存,保存时不会发生改变。而“♠”字符在GBK编码里面没有对应的编号,如果强制保存,系统会自动保存成“?”的字符编号,导致原有的编号发生改变,即使你使用其它编码方式打开,也没有办法还原成原有的编号,导致字符的丢失。

发布了11 篇原创文章 · 获赞 10 · 访问量 2108

猜你喜欢

转载自blog.csdn.net/dragoned_123/article/details/104878606