概要
在技术编码方面,演化顺序为:
ASCII ⇒ GB2312 ⇒ GBK ⇒ GB18030
GB2312或GB2312-80
GB2312或GB2312-80是中国国家标准简体中文字符集,1981年5月1日实施,通行于中国大陆,新加坡也采用此编码。GB2312标准共收录6763个汉字以及包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个字符。
GBK≈CP936
由于GB2312里有很多汉字并没有收录,繁体字、日语以及朝鲜语汉字也未收录在内。于是微软利用GB2312未使用的编码空间,收录GB13000.1-93全部字符制订了GBK编码。GBK是对GB2312的扩展,也就是CP936字码表的扩展(在此之前CP936与GB2312-80完全一样),向下完全兼容GB2312。GBK采用单字节和双字节编码,兼容ASCII。
微软的CP936通常被视为等同GBK,连 IANA 也以“CP936”为“GBK”之别名。事实上比较起来, GBK 定义之字符较 CP936 多出95字(15个非汉字及80个汉字)。
GB 18030
GB 18030,版本为GB 18030-2000,全称中华人民共和国国家标准GB 18030-2005《信息技术 中文编码字符集》。与GB2312完全兼容,与GBK基本兼容,支持GB 13000和Unicode的全部统一汉字,共收录汉字70244个。采用多字节编码(1/2/4)。
参考资料:
http://zh.wikipedia.org/wiki/GB_2312
http://zh.wikipedia.org/wiki/GBK
http://zh.wikipedia.org/wiki/GB_18030
详细信息参考下文:
【引文】中文字符编码标准
GB2312,CP936,GBK,GB18030,GB13000
GB2312
1980年,中国制定了GB2312-80,一共收录了 7445 个字符,包括 6763 个汉字和 682 个其它符号。
GB2312-80,简称为GB2312。
在 Windows 中的代码页(Code Page)是 CP936。
GB13000
1993年,国际标准Unicode 1.1版本推出,收录中国大陆、台湾、日本及韩国通用字符集的汉字,总共有20,902个。
中国大陆订定了等同于Unicode 1.1版本的“GB 13000.1-93”,简称为GB13000。
GB13000,显然包含的GB2312已有的文字和其他很多为包含的文字,如GB 2312-80推出以后才简化的汉字(如“啰”),部分人名用字(如中国前总理朱镕基的“镕”字),台湾及香港使用的繁体字,日语及朝鲜语汉字等。
GBK
微软,对GB2312-80的扩展,即利用GB 2312-80未使用的编码空间,收录所有的GB 13000.1-93和Unicode 1.1之中的汉字全部字符,制定了GBK编码。
GBK 收录了 21886 个符号,它分为汉字区和图形符号区。汉字区包括 21003 个字符。
GBK 作为对 GB2312 的扩展,在现在的 Windows 系统中仍然使用代码页 CP936 表示,但是同样的 936 的代码页跟一开始的 936 的代码页只支持 GB2312 编码不同,现在的 936 代码页支持 GBK 的编码,GBK 同时也向下兼容GB2312 编码。
所以,技术编码上,GBK兼容旧的GB2312,但是编码方式和GB13000不同,不兼容GB13000,但是所包含文字上,算是和GB13000相同。
GB18030
GBK自身并非国家标准,只是曾由国家技术监督局标准化司、电子工业部科技与质量监督司公布为“技术规范指导性文件”。
原始GB13000一直未被业界采用,2000年,国家出了标准GB18030-2000,简称GB18030,技术上兼容GBK而非GB13000,取代了 GBK1.0,成了正式的国家标准。
该标准收录了 27484 个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。
现在的PC平台必须支持 GB18030 ,对嵌入式产品暂不作要求。所以手机、MP3 一般只支持 GB2312。
GB18030 在 Windows 中的代码页是 CP54936。
这么多汉字编码标准的关系,总结起来就是第 2.8.2 节 “各种中文字符编码标准的关系”中所介绍的。
各种中文字符编码标准的关系
( 中国大陆的标准)GB 13000.1-93
=(国际标准)Unicode 1.1
(中国大陆标准)GB2312-80
= 简称GB2312
= Windows系统中的原先的CP936
(微软制定的)GBK
= (微软在编码方面)对 GB2312 的扩展
= (微软在所包含字符方面上包含了)GB 13000.1-93 + 其他部分汉字+ 台湾和香港的繁体 + 日语 + 朝鲜汉字
= Unicode 1.1 + 其他部分汉字+ 台湾和香港的繁体 + 日语 + 朝鲜汉字
对于GBK:
- 在编码方面:向下兼容GB2312,但是和GB 13000不同
- 在内容方面:等价于GB13000
微软中现在的新的CP936
= GBK
=兼容旧的GB2312
在技术编码方面上,演化顺序为:
ASCII ⇒ GB2312 ⇒ GBK ⇒ GB18030
后者对之前的,都是支持之前的编码,即向下兼容,即同一个字符,在这些编码中,都是同样的值,后面的标准,支持更多的字符。
区分中文编码的方法是高字节的最高位不为 0。
按照程序员的称呼,GB2312、GBK 到 GB18030 都属于双字节字符集 (DBCS)
表1 中文字符相关编码标准
编码标准 | 别名 | 标准所属 | 包含字符 |
---|---|---|---|
ASCII | 国际通用 | ||
GB2312 | 微软Windows中以前的CP936 | 中国大陆 | 6763 个汉字和 682 个其它符号 |
Unicode 1.1 | 国际通用 | 20,902个字符 | |
GB13000 | 中国大陆 | 20,902个字符 | |
GBK | 微软Windows中现在的CP936 | 微软 | 21886 个符号 |
GB18030 | 微软Windows中的CP54936 | 中国大陆 | 27484 个汉字+其他少数民族字符 |