ASCII的由来
最开始,计算机中一个字节有8位,最大255,于是美国人将0-32规定成了控制码,比如10表示换行,然后又将其他的设置为英文字母,标点符号、半角字符等,刚好用完了128种数字,用一个字节就能表示。
GB2312的由来
后来计算机流行到其他国家后,其余国家语言文字在ASCII表中没有,于是他们自己在ASCII中加入字符,等轮到我们国家时,就往里面添加汉字,0-127还是原封不动,但是汉字太多了,一个字节是肯定表示不完的,那怎么表示呢?于是用两个字节表示一个汉字,一个字节最大为0xFF,两个字节最大为0xFFFF,所以两字节区间为0x0000~0xFFFF,但是依然保留了ASCII里面的127位字符,所以要保证每个字节大于127,于是规定第一个字节从0xA1~0xF7,第二个字节从0xA1~0xFE。所以一个汉字两个字节就是这么来的,在这个过程中,我们还储存了一套全角字符进去,这些字符被称为GB2312
GBK的由来
但是中国的汉字太多了,于是就继续扩张,又被称为gbk(国标扩)
GB18030的由来
但是两个字节又不够用了,就不限制第二个字节了,只要第一个字节大于127开始就算作汉字,就这样又加了2W左右的汉字,还包括了少数民族的汉字,被称为GB18030,
ANSI的由来
操作系统有一个ANSI码,根据这个ANSI码,会有不同的编码方式,在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。
UNICODE的由来
后来,为了统一ANSI,也为了统一标准,就有了Unicode,即万国编码,最开始用两个字符表示中文、英文,也有用到三个字节的,为了统一字节长度,最高甚至用到了四字节来表示一个字符
UTF16的由来
为了统一字节长度,就有了utf16,中英文都是2字节来表示
UTF8的由来
因为英文用2字节太慢了,为了传输速度,,就有了utf8,UTF8是可变长度的
UTF32的由来
而utf16都是2字节,那么那些4字节长度的字符怎么表示呢,就有了UTF32,UTF32都是4字节的,
特别注意*:UNICODE包括了UTF8、utf116、utf32。
特别注意*:每种规范如ASCII,Unicode、ANSI、GBK等里面的字符对应的字节是一样的,比如65永远是对应A,"我"字永远对应的是多少多少,但是到了Unicode却不一样了,某某并不代表"我"字,所以需要转换,相当于对照字典,在GBK里的”我“对应的某某字节,到了UNICODE 中“我”对应的是哪个字节。