1980年,中国制定了GB2312-80,一共收录了 7445 个字符,包括 6763 个汉字和 682 个其它符号。
GB2312-80,简称为GB2312。
在 Windows 中的代码页(Code Page)是 CP936。
1993年,国际标准Unicode 1.1版本推出,收录中国大陆、台湾、日本及韩国通用字符集的汉字,总共有20,902个。
中国大陆订定了等同于Unicode 1.1版本的“GB 13000.1-93”,简称为GB13000。
GB13000,显然包含的GB2312已有的文字和其他很多为包含的文字,如GB 2312-80推出以后才简化的汉字(如“啰”),部分人名用字(如中国前总理朱镕基的“镕”字),台湾及香港使用的繁体字,日语及朝鲜语汉字等。
微软,对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相同。
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:
微软中现在的新的CP936
= GBK
=兼容旧的GB2312
在技术编码方面上,演化顺序为:
ASCII ⇒ GB2312 ⇒ GBK ⇒ GB18030
后者对之前的,都是支持之前的编码,即向下兼容,即同一个字符,在这些编码中,都是同样的值,后面的标准,支持更多的字符。
区分中文编码的方法是高字节的最高位不为 0。
按照程序员的称呼,GB2312、GBK 到 GB18030 都属于双字节字符集 (DBCS)
表 2.5. 中文字符相关编码标准
编码标准 | 别名 | 标准所属 | 包含字符 |
---|---|---|---|
ASCII | 国际通用 | ||
GB2312 | 微软Windows中以前的CP936 | 中国大陆 | 6763 个汉字和 682 个其它符号 |
Unicode 1.1 | 国际通用 | 20,902个字符 | |
GB13000 | 中国大陆 | 20,902个字符 | |
GBK | 微软Windows中现在的CP936 | 微软 | 21886 个符号 |
GB18030 | 微软Windows中的CP54936 | 中国大陆 | 27484 个汉字+其他少数民族字符 |