GB、UTF及其中各编码方案的理解
计算机识别文字需要用特定的编码来实现,常见的有GB2312、GBK、UTF8、UTF16等。种类太多,这里我整理了一些资料。
一、字符集
1、世界范围通用的Unicode字符集,包含了世界上的大部分文字系统。
2、国内适用的简体、繁体字符集。
二、编码
字符集需要用特定的编码才能被计算机识别。
1、UTF(Unicode Transformer Format)
Unicode用UTF编码。
UTF常见的分为UTF8、UTF16、UTF32。
Unicode定义了上百万个字符,如果将所有的字符用统一的格式表示,需要用4个字节。这就是UTF32,为Linux操作系统的默认方案。
但是绝大部分字符只使用2个字节就可以表示了,真正需要扩展到4个字节来表示的字符少之又少,这就推出了UTF16。如要适用4字节的字符时,就将两个UTF16的空间拼起来用。
UTF16还分为UTF16-LE和UTF16-BE两种。LE指Little Endian,而BE指Big Endian,为字符内码的高低位排序。例如“汉”字的Unicode编码是6C49。那么写到文件里时,究竟是将6C写在前面,还是将49写在前面?如果将6C写在前面,就是Big Endian;将49写在前面,就是Little Endian。Windows操作系统的默认编码是UTF16-LE,常被称呼为Unicode编码。
对于欧美地区,实际上编码只需要1个字节就可以表示,因此就产生了UTF8的编码方式。这是一种很灵活的编码,对于只需要1个字节的字符,就使用1个字节;对于中日韩等原本需要2个字节才能表示的字符,则通过一个UTF16-UTF8的算法实现相互之间的转换,一般需要3个字节才能表示;而对于需要4个字节才能表示的字符,UTF8可以扩展到6个字节每字符。
2、GB、GBK、BIG5
简体中文一般用GB2312-1980编码,大陆地区常用。
繁体中文一般用BIG5编码,港澳台地区常用。
1980年推出了GB2312-1980,共收录了7445个字符,包括6763个汉字和682个其它符号。
1995年的汉字扩展规范GBK1.0收录了21886个符号,是对GB2312-1980的扩展,简体、繁体都收录了。(K就是“扩”的拼音首字母。)
2000年的GB18030-2000取代GBK1.0。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字,支持Unicode的CJK基本集、CJK兼容集、CJK扩充集A。(CJK为Unicode的中日韩文字集。)
2005年推出了GB18030-2005标准,支持CJK扩充集B、将Unicode的BMP(基本多语言平面)映射到GB18030的4字节区,这样就实现了Unicode与GB18030的无损转化。
最新评论