字符编码
字符编码
总所周知计算机中只有0和1,人类文字众多,怎样把二进制对应人类文字储存起来呢?于是就有了一套规约来对应一串010101的数和文字,这个规约是人为定的,就有了各种不大相同的规定,就有了不同的字符编码。由于计算机是美国发明的,所以首先有了叫ASCII的编码。
ASCII
ASCII一开始是七个二进制数,即0000 0000,他能代表28=256个数。一开始,26个字母大小写和一些符号什么的总共占了127个,就用一个0开头的8位的二进制数代表一个符号或字母。如字母a的ASCII码为‘0100 0001’
后来啊,就感觉不够用了,因为还有一些符号没法表示,然后就又将1开头的那128个用上了。ASCII码已规定并使用很多很多年。
ASCII码字符对照表链接:
http://www.51hei.com/mcu/4342.html
GB2312
再后来啊。。。呵,中国人开始用电脑了,电脑怎样让电脑显示中文字呢?还得类似的制定规约,这个规约叫GB2312。
GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。
(B0就是1011 0000的16进制表示,一个16进制表示一个4位2进制数,24=16嘛,这样看着相对舒服简单)
可是中国文字博大精深,最小的那本新华字典还一万多字呢,根本不够。于是,就有了GBK。
GBK
1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。
两万多个字符显然还是不够,但其实足够包括中国人常用的汉字。
后来2000年的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。
现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。(字库太大不利于小产品成本控制,那些百年一遇的生僻字也没有必要在MP3里放着占地方)
但是,世界上又不止有中文。所以有了一套对全世界字符的规定:Unicode。
Unicode
Unicode又叫 统一码、万国码、单一码,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536。
UTF-8
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
PS:ASCII、GB3212、GBK、Unicode编码是目前经常用到的。在次可见计算机领域前辈们做出的辛勤努力,做出如此成就可谓壮观,实属不易。