中文乱码的一些规律技巧
文章目录
乱码的表现
上年纪的人在早几年接触C编程时候一定很熟悉一段锟斤拷锟斤拷锟斤拷锟斤拷
,看到这段话的时候就会心里咯噔一下,写的代码又特么废了。
识别乱码的技巧
乱码产生的原因
计算机最初是英文语境的人发明的,而计算机可理解的只有0和1,就需要将英文字母映射成计算机可识别的0和1,这个过程就叫编码。最早计算使用的编码方式叫American Standard Code for Information Interchange
,缩写就是ASCII
。
而ASCII一个字节只有8个二进制状态,最多能表现2^{8} = 256个不同的符号,对于26个字幕和一些常用的特殊符号来说,足够使用了。
但是对于上万、十万的汉字来说,ASCII
编码就不够用了,这时候就产生了GB
编码,比较熟悉的就是GB2312
简体中文编码。
而GB
编码使用了2个字节表示一个汉字,这样GB
编码就可以表示不超过2^{8} * 2^{8} = 65536个不通的符号。对于常用的中文来说,GB
编码足够用了。
然而问题又产生了,中英文够用了,但更多的语种比如:韩语、西班牙语、法语...需要支持的语种、符号越来越多,就又产生了一个新的编码方式Unicode
Unicode
使用3-4个字节表示一个符号,理论上可以支持所有人类使用的符号
重点来了,如果一个使用了GB
编码的文档用Unicode
编码打开读取会发生什么呢?因为GB
编码是使用了2个字节表示一个符号,而Unicode
会尝试将4个字节转换成一个符号输出,最终就会将本来人类可以正常理解的两个汉字变成了一个�
,也就是前边图片中的口字码
。
换个专业的名词就管这种情况叫乱码,本质上就是用错误的编码解码。
文章作者 pengxiaochao
上次更新 2020-12-12
许可协议 不允许任何形式转载。