1 ASCII 码

  1. 全名是 American Standard Code for Information Interchange 叫做 “美国信息交换标准码”。ASCII 码,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。标准的ASCII 码只能表示128个字符

2 ANSI 码

  1. ANSI 编码是一种多字节字符集, 是对 ASCII 码的拓展:ANSI 编码用 0x00~0x7f (即十进制下的 0 127)范围的 1 个字节来表示 1 个英文字符,超出一个字节的 0x0080~0xFFFF 范围来表示其他语言的其他字符。也就是说,ANSI 码仅在前 1280-127)个与 ASCII 码相同,之后的字符全是某个国家语言的所有字符。中国制定了 GB2312(之前) , GBK编码(现在),用来把中文编进去。另外,日本把日文编到 Shift_JIS 里,韩国把韩文编到 Euc-kr 里,各国有各国的标准。不同语言之间的 ANSI 码之间不能互相转换,这就会导致在多语言混合的文本中会有乱码。

3 Unicode 编码

  1. 为了解决不同国家 ANSI 编码的冲突问题,Unicode 应运而生:如果全世界每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是 Unicode,就像它的名字都表示的,这是一种所有符号的编码。

注: Unicode只是一个编码规范,UTF-8、UTF-16和UTF-32才是具体的实施方式

UTF规定:如果一个符号只占一个字节,那么这个8位字节的第一位就为0。如果为两个字节,那么规定第一个字节的前两位都为1,然后第一个字节的第三位为0,第二个字节的前两位为10,然后如果是三个字节的话,那么第一个字节的前三位为111,第四位为0,剩余的两个字节的前两位都为10。

(1) UTF-8

UTF-8用8的倍数来表示一个字符,也就是说在UTF-8编码格式中,一个字符可以是8位(一个字节)、16位(两个字节)、24位(三个字节)、32位(四个字节)

(2) UTF-16

UTF-16则可以是16位(两个字节)、32位(四个字节)

(3) UTF-32

所有字符都是32位(即四个字节)