GBK码(汉字编码之GBK编码)
一、什么是GBK编码
GBK是又一个汉字编码标准,全称《汉字内码扩展规范》(GBK),英文名称 Chinese Internal Code Specification,中华人民共和国全国信息技术标准化技术委员会 1995年 12月 1日制订,国家技术监督局标准化司、电子工业部科技与质量监督司 1995年 12月 15日联合以技监标函 [1995] 229号文件的形式,将它确定为技术规范指导性文件,发布和实施。这一版的 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规范收录了 ISO 10646.1中的全部 CJK汉字和符号,并有所补充。具体包括:
1. GB 2312中的全部汉字、非汉字符号。
2. GB 13000.1中的其他 CJK汉字。以上合计 20902个 GB化汉字。
3.《简化字总表》中未收入 GB 13000.1的 52个汉字。
4.《康熙字典》及《辞海》中未收入 GB 13000.1的 28个部首及重要构件。
5. 13个汉字结构符。
6. BIG-5中未被 GB 2312收入、但存在于 GB 13000.1中的 139个图形符号。
7. GB 12345增补的 6个拼音符号。
8.汉字“○”。
9. GB 12345增补的 19个竖排标点符号(GB 12345较 GB 2312增补竖排标点符号 29个,其中 10个未被 GB 13000.1收入,故 GBK亦不收)。
10.从 GB 13000.1的 CJK兼容区挑选出的 21个汉字。
11. GB 13000.1收入的 31个 IBM OS/2专用符号。
二、码位分配及顺序
GBK亦采用双字节表示,总体编码范围为 8140-FEFE,首字节在 81-FE之间,尾字节在 40-FE之间,剔除 xx7F一条线。总计 23940个码位,共收入 21886个汉字和图形符号,其中汉字(包括部首和构件)21003个,图形符号 883个。
全部编码分为三大部分:
1.汉字区。包括:
a. GB 2312汉字区。即 GBK/2: B0A1-F7FE。收录 GB 2312汉字 6763个,按原顺序排列。
b. GB 13000.1扩充汉字区。包括:
(1) GBK/3: 8140-A0FE。收录 GB 13000.1中的 CJK汉字 6080个。
(2) GBK/4: AA40-FEA0。收录 CJK汉字和增补的汉字 8160个。CJK汉字在前,按 UCS代码大小排列;增补的汉字(包括部首和构件)在后,按《康熙字典》的页码/字位排列。
2.图形符号区。包括:
a. GB 2312非汉字符号区。即 GBK/1: A1A1-A9FE。其中除 GB 2312的符号外,还有 10个小写罗马数字和 GB 12345增补的符号。计符号 717个。
b. GB 13000.1扩充非汉字区。即 GBK/5: A840-A9A0。BIG-5非汉字符号、结构符和“○”排列在此区。计符号 166个。
3.用户自定义区:分为(1)(2)(3)三个小区。
(1) AAA1-AFFE,码位 564个。
(2) F8A1-FEFE,码位 658个。
(3) A140-A7A0,码位 672个。
第(3)区尽管对用户开放,但限制使用,因为不排除未来在此区域增补新字符的可能性。
三、字形
GBK对字形作了如下的规定:
1.原则上与 GB 13000.1 G列(即源自中国大陆法定标准的汉字)下的字形/笔形保持一致。
2.在 CJK汉字认同规则的总框架内,对所有的 GBK编码汉字实施“无重码正形”(“GB化”);即在不造成重码的前提下,尽量采用中国新字形。
3.对于超出 CJK汉字认同规则的、或认同规则尚未明确规定的汉字,在 GBK码位上暂安放旧字形。这样,在许多情况下 GBK收入了同一汉字的新旧两种字形。
4.非汉字符号的字形,凡 GB 2312已经包括的,与 GB 2312保持一致;超出 GB 2312的部分,与 GB 13000.1保持一致。
5.带声调的拼音字母取半角形式。
二、汉字在GBK编码是多少字节
汉字在GBK\GB2312编码是2个字节。
字节:字节(Byte)是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制。在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
对于符号来说,英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。
字符:是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!•#¥%……—*()——+等等,相当于这些东西的统称。所以,1个汉字字符会占用两个英文字符的位置,存储需要2个字节;1个英文字符存储只占一个英文字符的位置,存储需要1个字节;2个数字为一个字节。
“字节”与“字符”的对应关系:
ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。
UTF-8编码中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。
Unicode编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节。
UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。
UTF-32编码中,世界上任何字符的存储都需要4个字节。
三、字体里面GB和GBK有什么区别
1、全称不一样。
GB字体全称GB2312或GB2312-80,是一个简体中文字符集的中国国家标准,全称为《信息交换用汉字编码字符集--基本集》,由中国国家标准总局发布,1981年5月1日实施。
GBK全名为汉字内码扩展规范,英文名Chinese Internal Code Specification。K即是“扩展”所对应的汉语拼音(KuoZhan)中“扩”字的声母。
2、收录的汉字规模不同。
GB2312标准共收录6763个汉字, GB2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符号。这种表示方式也称为区位码。
GBK汉字国标扩展码,基本上采用了原来GB2312-80所有的汉字及码位,并涵盖了原Unicode中所有的汉字20902,总共收录了883个符号, 21003个汉字及提供了1894个造字码位。
3、可输出格式不同。
GB可以输出简体中文,GBK则可以输出简/繁体中文。如部分于GB2312-80推出后才简化的汉字(如“啰”),部分人名用字(如中国前总理朱镕基的“镕”字),台湾及香港使用的繁体字,日语及朝鲜语汉字等,GB字库并未有收录在内,而拓展后的GBK字库则可以输出。