字符编码的发展史
1. ASCLL——开天辟地
在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。ASCII码,用一个字节表示,8位能够表示256个字符,可以用来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符,足够美国人用的了,事实上他们只用到了128个字符,还有位就空着了。
2.MBCS
后来啊,其他国家知道了这个码,但是各个国家有各个国家的语言,ASCll码能表示的东西就太少了。所以每个国家都开始编写自己国家的编码,统称为MBCS,全称:Muilti-Bytes Charecter Set,多字节字符集。
那么问题就来了,不同的国家,同一个编码可能会表示不同的字符,怎么做到国际统一呃呃呃。
3.GB2312
把中国单独拉出来看,MBCS时期,中国于1980年发布了GB2312,就是国标的拼音,这个编码用区位码(94个区,每区94个字符)的方式可以支持7000多个汉字,它所收录的汉字已经覆盖中国大陆99.75%的使用频率,基本可以满足汉字计算机的需要了。
4.GBK1.0
7000多个汉字人类当然是不能满足,所以人们在GB2312的基础上开始扩展,所以1995年GBK1.0诞生了(国标扩展的拼音),可以支持2万多个汉字。
5.GB18030
虽然事已至此,中国人还是不满足哈哈,所以2000年的时候GB18030来了,可以支持2万7千多个汉字。
6.Unicode
你是不是以为接下来还是中国人的不满足哈哈,不不不,其实上边的2~5阶段都是属于MBCS阶段,只不过我把中国拎出来讲了,谁让咱是中国人呢。那么既然MBCS无法把世界上各种文字和符号全部表示,就需要新出一种可以代表所有字符和符号的编码,那就是90年代Unicode。
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536(注:此处说的的是最少2个字节,可能更多)。
7.UTF-8
UTF-8,是对Unicode编码的压缩和优化,所以UTF-8包含于Unicode,只是他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存…