GBK 是又一个汉字编码标准,全称《汉字内码扩展规范》(GBK),这一版的 GBK 规范为 1.0 版。GB 即“国标”,K 是“扩展”的汉语拼音第一个字母。GBK 向下与 GB 2312编码兼容,向上支持 ISO 10646.1 国际标准,是前者向后者过渡过程中的一个承上启下的标准。
ISO 10646 是国际标准化组织 ISO 公布的一个编码标准,即 Universal Multilpe-Octet Coded Character Set(简称 UCS),大陆译为《通用多八位编码字符集》,台湾译为《广用多八位元编码字元集》,它与 Unicode 组织的 Unicode 编码完全兼容。ISO 10646.1 是该标准的第一部分《体系结构与基本多文种平面》。我国 1993 年以 GB 13000.1 国家标准的形式予以认可(即 GB 13000.1 等同于 ISO 10646.1)。
ISO 10646 是一个包括世界上各种语言的书面形式以及附加符号的编码体系。其中的汉字部分称为“CJK 统一汉字”(C 指中国,J 指日本,K 指朝鲜)。而其中的中国部分,包括了源自中国大陆的 GB 2312、GB 12345、《现代汉语通用字表》等法定标准的汉字和符号,以及源自台湾的 CNS 11643 标准中第 1、2 字面(基本等同于 BIG-5 编码)、第 14 字面的汉字和符号。
GBK内码和GBK码的区别是什么?
GBK内码和GBK码本质上没区别。从使用上来说,GB2312-80是80年代制定的汉字处理编码国家标准,定义了六千多个常用汉字和符号。在这个标准中,那些常用汉字和符号被按照符号、特常用汉字、次常用汉字的顺序编排为94个区,每区94位汉字(符号)。所谓的区位码就是按照先区后位的方法对汉字进行的数字编码,以“亮”字为例,“亮”按照GB2312-80处于第33区的第33个字,它的区位码就是3333,使用区位输入法,用3333就可以输入“亮”。这个3333也就是区位输入法下“亮”字的外码,若是使用拼音输入法,那么亮字的外码则是 liang 。 从这里就可以知道,所谓外码就是输入汉字时使用的编码,跟特定输入法对应。而内码则是汉字在存储时使用的编码,GB2312-80标准广泛应用的时代还是CCDOS时代,比较典型的CCDOS就是UCDOS,CCDOS中汉字的存储用编码是,第一字节为汉字的区码加160(0xA0),第二字节为位码加160,所以“亮”字的内码,第一字节和第二字节都是 33+160(0xC1),因为它的区码和位码都是33,通常说的GB码或者GB2312码都是指这种编码规则下的内码,与港台地区经常使用的BIG5码相区别。因为GB2312-80定义的字符集太小,容纳的汉字太少,所以后来又有了GBK,GBK将 GB2312-80定义为自己的子集,在GB2312基础上定义了更多汉字。智能ABC就是定义在GB2312上的输入法,使用智能ABC无法输入朱镕基的“镕”字和“曌”字,而全拼定义在GBK上,使用全拼就可以输入这两个字。可以说,GB2312和GBK既是编码标准又是内码存储方案。