ASCII码:英文字符编码,1个字节,表示266个字符
GB2312:兼容ASCII码。能够表示中文。英文一个1字节表示(编码方案同ASCII,表示的字符和ASCII相同),中文2个字节表示。数值小于127的和ASCII表示的字符一样。两个字节都大于127表示一个汉字。
GBK:兼容GB2312,表示的字符更多。第一个字节数值只要大于127,就是一个中文编码的开始。
类似GBK一样,各个国家制定一套自己的编码方案,表示自己国家语言。
UNICODE:为了让每个国家的编码方案能够互相通信。这个时候标准化组织就处理,制定了unicode编码。
每个字符用2个字节表示,能表示65536个不同的码字,最小的127个码字,兼容ASCII码编码(数值上相等,只是由一个字节变成了两个字节)。其实的码字,都把各国最常用的字符包含进去。
Unicode只是定义了字符的编码方案,没有定义如何保存和传输,因此不对应具体实现。
比如,windows下的记事本,另存为的时候,有4种编码方案可以选择:
(1) ANSI
(2) Unicode
(3) Unicode big endian
(4) Utf-8
ANSI对应GBK编码,unicode和unicode bigendian 对应windows下的unicode编码且以小端模式存储方式的一种unicode实现,同样unicode big endian是大端模式实现。
UTF不算是新的编码方案,只是unicode的一种具体存储和传输的实现方式。该编码和unicode是一一对应的。该编码是一种变长字节编码。英文用一个字节编码,中文用3个字节编码。Unicode和utf转换关系如下:
UTF-8
0000 –007F
0xxxxxxx
0080 –07FF
110xxxxx10xxxxxx
0800 –FFFF
1110xxxx10xxxxxx 10xxxxxx
Unicode在网络传输中常用的有两种方式,分别是Utf-8和utf-16,分别表示一次传输8位和16位。
有无bom。
一段文字以某种编码方式保存后,在打开的时候,如何知道编码类型呢?跟打开文件一样,如何知道调用哪个应用程序打开呢?我们知道,打开应用程序的时候,文件属性中有标记文本的类型。那么bom就是用来标记文件编码方案的。
Windows系统为了兼容性,文件保存的时候会自动加上bom,标记文件的类型。在打开文件的时候,会自动把bom去掉,显示正文。