带你了解字符编码的前世今生

1946 计算机诞生1946 年,世界第一台计算机诞生了。计算机由硬件和系统软件组成,它最基本的功能就是存储、表示与处理信息。通俗地说,信息其实就是由各种各样的字符组成,比如英文字母、汉字以及其他国家的语言等。那么计算机如何才能表示这些各种各样的字符呢? 于是有一群人想到,我们可以用8个晶体管的“通”或“断”组合出一些不同的状态,来表示信息。“通”用 1 表示,“断”用 0 表示,这样一个由值 0 和 1 组成的长度为 8 的位序列,就代表着一个字节,八个二进制位可以组合出 256 种状态,这样一个字节就可以表示 256 种字符。 1967 ASCII计算机最先只在美国使用,他们把所有的空格、标点符号、数字、大小写字母分别用单个字节表示,一直编到了第128个,这样计算机就可以用不同字节来存储英语的文字了,于是美国制定了一套 ASCII 编码标准,用来规定这种英语字符与二进制位之间的关系。 这种方式就是用一个唯一的单字节大小的整数值来表示每个字符。ASCII 码一共规定了 128 个字符的编码,这 128 个符号,只占用了一个字节的后面 7 位,最前面的一位统一规定为 0。比如空格 SPACE 是 32(二进制00100000),大写的字母A是65(二进制01000001)。 EASCII后来,世界各地都开始使用计算机,128 个字符对于英语字符确实够用了,但用来表示其他语言就有些捉襟见肘了。比如法语中,字母上方有注音符号,于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。这样一来,这些欧洲国家的编码体系,可以表示最多 256 个字符了。因此 EASCII(Extended ASCII,延伸美国标准信息交换码)应运而生。下图是 EASCII 码比 ASCII 码扩充出来的符号包括表格符号、计算符号、希腊字母和特殊的拉丁符号: 1981 GB2312但是等计算机发展到中国,256种符号用来表示我们这10万左右的汉字就远远不够了,单个字节不够,我们就用两个字节组合起来表示呀,于是我们规定,一个小于 127 的字符的意义与原来相同,但两个大于 127 的字符连在一起时,就表示一个汉字,前面的一个字节(称之为高字节)从 0xA1 用到 0xF7,后面一个字节(称之为低字节)从 0xA1 用到 0Xfe,这样我们可以组合出大约 7000 多个简体汉字了。 于是 1981 年,国家标准化管理委员会正式制订了中华人民共和国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》,项目代号为 GB 2312。 1984 BIG5但是又考虑到港澳台同胞使用的繁体字并没有收录到GB2312编码,于是信息工业策进会在1984年与台湾13家厂商签定“16位个人电脑套装软件合作开发(BIG-5)计划”,开始编写并推出了BIG5标准。 1991 Unicode随着计算机的飞速发展,各个国家都开始制定自己的编码标准,这样导致了国家之间谁也不懂别人的编码,不支持别人的编码,这时候要是将全世界所有的字符包含在一个集合里,有一个统一的字符集就好了,就不会再有乱码的问题。 ...

April 29, 2019 · 2 min · jiezi