编码基础概念
一、ANSI——以美国的英语世界为主导的,第一个诞生的编码。
ANSI指American National Standards Institute(美国国家标准学会)。
ANSI编码不是一种具体的编码方式,而是一种指定在某些环境下使用某些编码方式的标准。比如,在中文环境中ANSI的编码标准为GBK,在日语环境中ANSI的编码标准则是Shift_JIS编码。
二、ASCII编码——ANSI编码的各国各自编写的进化版本
使用0×00~0x7F之间的每个字节表示一个字符,原设计有127个编码。英语世界之外的其他国家对此字符集进行了扩展排在128位后面,除了ascii字符集之外,他们1个到4个字节来表示一个字符,形成了自己语言的编码方式,比如GBK(中文), Big5、Shift_JIS等。
三、GBK——中文环境下ansi编码对应的编码方式为GBK
GBK的编码规则为:
a) 对于ascii字符集中的字符,使用ascii编码(也就是说gbk编码是兼容ascii编码的);
b) 非ascii字符使用GB标准。最早是GB2312,但是由于该标准收录的汉字数较少,后来就被GB18030取代。GB18030也在不断扩展,GB18030-2005收录了70244个汉字。本文不叙述gbk的具体编码规则,简单来说该标准表达单个字符使用1字节、2字节、4字节这三种情况。
ASNI编码是不利于跨语言数据交流的,比如windows文件默认使用ANSI编码。那么,在中文windows下创建的文件,在日文windows下是无法正确解析的,因为日文windows下ANSI编码使用的是Shift_JIS编码。
四、unicode——统一了世界各种语言的编码
unicode编码被创造出来,需要注意的是unicode也不是一个具体的编码规则,在unicode标准下,有utf-8,utf-16等具体的实现。他们都对应不同的编码规则。
在某个角度理解,ANSI编码是一种历史遗留,应该被淘汰,进而使用更加先进、方便的unicode编码。苹果使用的也是unicode编码。