ISO-8859-1,ASCII,Unicode,UTF-8,UTF-16,GB2312,GBK,DBCS编码

来源:互联网 发布:网络创世纪 stones 编辑:程序博客网 时间:2024/05/21 20:50

ISO-8859-1

ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。

ASCII

本来只用前0-127号表示英文字母和符号,后来扩充的128-255字符集用来表示除英文外的其他欧洲文字,被称为“扩展字符集”

GB2312

中国人把ASCII里127后的符号取消,规定前127个符号与原来相同。两个大于127的字符在一起组成一个汉字,还包括了数学符号,平假名,罗马字母等,尤其把ASCII中原有的数字,标点,字母都重新编码两个字节长的编码,即全角字符,127以下的那些就叫做半角字符。GB2312 是对 ASCII 的中文扩展。

GBK

GB2312的两个字节是“大大”,后来扩充为“大小”,英文字符仍为一字节。GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。

DBCS

这一系列汉字编码的标准统称为DBCS(Double Byte Charecter Set )。在DBCS系列标准里,最大的特点是两字节长的汉字字符和一字节长的英文字符并存于同一套编码方案里,因此他们写的程序为了支持中文处理,必须要注意字串里的每一个字节的值,如果这个值是大于127的,那么就认为一个双字节字符集里的字符出现了。

Unicode

用两个字节(16位)表示所有字符,规定unicode里0-127个字符与ASCII一样,称为半角字符(包含字母和标点符号),半角字符的前八位永远是0。Unicode 在制订时没有考虑与任何一种现有的编码方案保持兼容,编码间转换必须通过查表来进行。

UTF-8&UTF-16

Unicode 如何在网络上传输呢?面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF8就是每次8个位传输数据,而UTF16就是每次16个位,只不过为了传输时的可靠性,从Unicode到UTF时并不是直接的对应,而是要过一些算法和规则来转换。

例如"汉"字的Unicode编码是6C49。6C49在0800-FFFF之间,所以要用3字节模板:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 1100 0100 1001,将这个比特流按三字节模板的分段方法分为0110 110001 001001,依次代替模板中的x,得到:1110-0110 10-110001 10-001001,即E6 B1 89,这就是其UTF8的编码。




0 0
原创粉丝点击