锟斤拷吧为什么不开放?UTF-8与GBK互转,为什么会乱码

我们知道在计算机内存中存储嘚是二进制数据,在网络传输中也是二进制数据,但最终呈现给用户的是字符串二进制与字符串的转化就需要编码、解码的参与,如果世界上只有一种字符编码方式就不会有乱码这一说了,但事实是编码的方式太多了,utf-8、utf-32、utf-16、gbk、gb2312、iso-8859-1、big5、unicode等等由于每个编码的规则不┅样,一般都不能用一种进行编码用另一种进行解码。如utf-8中一个字母用一个字节表示,一个汉字用三个字节表示特殊的汉字用四个芓节表示,而gbk中一个字母用一个字节表示,一个汉字用两个字节表示

有一个说法,内存中存储的二进制是unicode码如果内存中的数据需要存储或传输时,才会进行一次转化将unicode码转化成其它的编码二进制(有待考证)。个人觉得这种方式很合理毕竟unicode码中每个字符都有独一無二的二进制与之对应。

排查乱码问题难度在于是在哪个环节出了问题,但乱码的本质都是一样的读取二进制的编码和最初将字符串轉化成二进制的编码方式不一致

此处说明一个概念编码指将字符串转化成二进制,解码指将二进制转化成字符串

在这我们讨论一下,gbk和utf-8互转的乱码问题直接上代码:

 
 

我要回帖

更多关于 锟斤拷吧为什么不开放 的文章

 

随机推荐