为什么会出现乱码

844 阅读2分钟

有时你打开一个文件,会发现显示出来的东西你一个一个分开来看,都认识,但是合在一起,就不认识了。比如:烫烫锟斤拷

简单的理解是文件打开方式有问题,比如用wps建立一个文档,

1.png

然后用记事本打开 2.png

深层次的理解是编码与解码的方式不一致

比如你用英语和拼音按同样的按键,输出的结果不一样。

我搬砖时,经常为输入法要来回切换烦恼不已。

ASCII 字符集

计算机起源于美国

他们用二进制来存储数据

每一个 0 或 1 称为一位

而八位就组成了一个字节

每一位能标识两种状态

每个字节则能标识 2^8 = 256 种状态

那么这些状态有啥用呢?

美国人把 0 - 127 这 128 个状态

都映射到各种字符上

包括大小写英文字母、标点符号、数字等

这就是常说的 ASCII 字符集

ASCII 拓展字符集

后来

随着其他国家开始使用计算机

ASCII 里没有他们的字母

他们便利用起剩下的 128 - 255 位

这被称为 ASCII 拓展字符集

ASCII 的中文拓展

然而

事情并没有这么简单

等到中国人开始使用计算机时

已经没有多余的位置了

咋办呢?

智慧的中国人民

毫不客气地去掉了127 位之后的编码

用 2 个字节来编码一个汉字

这样一来

7000 多常用汉字的编码问题就解决了

这就是 GB2312 编码

它是对 ASCII 的中文拓展

GBK

GB2312 不够用了咋办呢

这回拓展出了GBK

不仅包含 GB2312 所有内容

还包含了 20000 多个

新的汉字(含繁体字)

GB18030

再后来少数民族也要用电脑了

GBK 又拓展成了 GB18030

这一系列汉字编码标准被通称为

image.png

由于各国都有了自己的标准

为了正好的使用,制定了统一的标准

unicode

Unicode 的制定就是为了

将世界上所有的符号都纳入其中

每一个符号都给予一个独一无二的编码

如此一来就可以解决乱码问题

(虽然到现在并没有解决)

参考文献:

mp.weixin.qq.com/s/CSsN5rd-a…