1 unicode中的汉字
在unicode 5.0的99089个字符中,有71226个字符与汉字有关。它们的分布如下:
block名称 | 开始码位 | 结束码位 | 字符数 | |
cjk统一汉字 | 4e00 | 9fbb | 20924 | |
cjk统一汉字扩充a | 3400 | 4db5 | 6582 | |
cjk统一汉字扩充b | 20000 | 2a6d6 | 42711 | |
cjk兼容汉字 | f900 | fa2d | 302 | |
cjk兼容汉字 | fa30 | fa6a | 59 | |
cjk兼容汉字 | fa70 | fad9 | 106 | |
cjk兼容汉字补充 | 2f800 | 2fa1d | 542 |
如果不算兼容汉字,unicode目前支持的汉字总数是20924 6582 42711=70217。
这里有一个细节。在早期的unicode版本中,cjk统一汉字区的范围是0x4e00-0x9fa5,也就是我们经常提到的20902个汉字。当前版本的unicode增加了22个字符,码位是0x9fa6-0x9fbb。它们是:
那么gb18030是否支持这22个字符?后面还会讨论。
2 gb2312
1980年的gb2312一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从b0-f7,低字节从a1-fe,占用的码位是72*94=6768。其中有5个空位是d7fa-d7fe。
这6763个汉字在unicode中不是连续的,分布在cjk统一汉字字符区(0x4e00-0x9fa5)的20902个汉字中。
3 gbk
1995年的汉字扩展规范gbk1.0收录了21886个符号,包括21003个汉字和883个其它符号。
这21003汉字包括cjk统一汉字区的20902个汉字。余下的101个汉字包括:
- 增补汉字和部首80个,包括28个部首和52个汉字。gbk编码是从fe50-fe7e,fe80-fea0。下图标注了unicode编码。
在制定gbk时,unicode中还没有这些字符,所以使用了专用区的码位,这80个字符的码位是0xe815-0xe864。后来,unicode将52个汉字收录到“cjk统一汉字扩充a”。28个部首中有14个部首被收录到“cjk部首补充区”。所以在上图中,这些字符都有两个unicode编码。
上图中淡黄色背景的8个部首被收录到“cjk统一汉字区”的新增区域,即前面提到的0x9fa6-0x9fbb。还有6个淡灰色背景的部首被unicode收录到“cjk统一汉字扩充b”(网友slt指正)。
请注意,淡黄色和淡灰色的14个字符按照gb18030还是应该映射到pua码位。这14个字符与非pua码位的映射关系只是网友找出来的,不是标准规定的。如果按照gbk编码,这80个字符应该全部映射到pua码位。gb18030将其中66个字符映射到了非pua码位。不过在windows中,简体中文区域的默认代码页还是gbk,不是gb18030。
- cjk兼容汉字区挑选出来的21个汉字。见下表:
汉字 gbk编码 unicode编码 郎 fd9c f92c 凉 fd9d f979 秊 fd9e f995 裏 fd9f f9e7 隣 fda0 f9f1 兀 fe40 fa0c 嗀 fe41 fa0d 﨎 fe42 fa0e 﨏 fe43 fa0f 﨑 fe44 fa11 﨓 fe45 fa13 﨔 fe46 fa14 礼 fe47 fa18 﨟 fe48 fa1f 蘒 fe49 fa20 﨡 fe4a fa21 﨣 fe4b fa23 﨤 fe4c fa24 﨧 fe4d fa27 﨨 fe4e fa28 﨩 fe4f fa29
4 gb18030-2000
4.1 字汇
gb18030-2000的字汇部分是这样写的:
本标准收录的字符分别以单字节、双字节和四字节编码。5.1 单字节部分
本标准中,单字节的部分收录了gb 11383的0x00到0x7f全部128个字符及单字节编码的欧元符号。
5.2 双字节部分
本标准中,双字节的部分收录内容如下:
gb 13000.1的全部cjk统一汉字字符。
gb 13000.1的cjk兼容区挑选出来的21个汉字。
gb 13000.1中收录而gb 2312未收录的我国台湾地区使用的图形字符139个。
gb 13000.1收录的其它字符31个。
gb 2312中的非汉字符号。
gb 12345 的竖排标点符号19个。
gb 2312未收录的10个小写罗马数字。
gb 2312未收录的带音调的汉语拼音字母5个以及ɑ 和ɡ 。
汉字数字“〇”。
表意文字描述符13个。
增补汉字和部首/构件80个。
双字节编码的欧元符号。
5.3 四字节部分
本标准的四字节的部分,收录了上述双字节字符之外的,包括cjk统一汉字扩充a在内的gb 13000.1 中的全部字符。
4.2 汉字
如下表所示,gb18030-2000收录了27533个汉字:
类别 | 码位范围 | 码位数 | 字符数 | 字符类型 |
双字节部分 | 第一字节 0xb0-0xf7 第二字节 0xa1-0xfe |
6768 | 6763 | 汉字 |
第一字节0x81-0xa0 第二字节0x40-0xfe |
6080 | 6080 | 汉字 | |
第一字节0xaa-0xfe 第二字节0x40-0xa0 |
8160 | 8160 | 汉字 | |
四字节部分 | 第一字节0x81-0x82 第二字节0x30-0x39 第三字节0x81-0xfe 第四字节0x30-0x39 |
6530 | 6530 | cjk统一汉字扩充a |
27533就是6763 6080 8160 6530。双字节部分的6763 6080 8160=21003个汉字就是gbk的21003个汉字。
在unicode中,cjk统一汉字扩充a有6582个汉字,为什么这里只有6530个汉字?
这是因为在gbk时代,双字节部分已经收录过cjk统一汉字扩充a的52个汉字,所以还余6530个汉字。
5 gb18030-2005
5.1 字汇
gb18030-2005的字汇部分是这样写的:
本标准收录的字符分别以单字节、双字节或四字节编码。5.1 单字节部分
本标准中,单字节的部分收录了gb/t 11383-1989的0x00到0x7f全部128个字符。
5.2 双字节部分
本标准中,双字节的部分收录内容如下:
gb 13000.1-1993的全部cjk统一汉字字符。见附录a。
gb 13000.1-1993的cjk兼容区挑选出来的21个汉字。见附录a。
gb 13000.1-1993中收录而gb 2312未收录的我国台湾地区使用的图形字符139个。见附录a。
gb 13000.1-1993收录的其它字符31个。见附录a。
gb 2312中的非汉字符号。见附录a。
gb 12345 的竖排标点符号19个。见附录a。
gb 2312未收录的10个小写罗马数字。见附录a。
gb 2312未收录的带音调的汉语拼音字母5个以及ɑ 和ɡ 。见附录a。
汉字数字“〇”。 见附录a。
表意文字描述符13个。见附录a和附录b。
对gb 13000.1-1993增补的汉字和部首/构件80个。见附录a和附录c。
双字节编码的欧元符号。见附录a。
5.3 四字节部分
本标准的四字节的部分,收录了上述双字节字符之外的,gb 13000的cjk统一汉字扩充a、cjk统一汉字扩充b和已经在gb13000中编码的我国少数民族文字的字符。见附录d。
gb18030-2005最主要的变化是增加了cjk统一汉字扩充b。它还去掉了单字节编码的欧元符号(0x80)。
5.2 汉字
如下表所示,gb18030-2005收录了70244个汉字:
类别 | 码位范围 | 码位数 | 字符数 | 字符类型 |
双字节部分 | 第一字节 0xb0-0xf7 第二字节 0xa1-0xfe |
6768 | 6763 | 汉字 |
第一字节0x81-0xa0 第二字节0x40-0xfe |
6080 | 6080 | 汉字 | |
第一字节0xaa-0xfe 第二字节0x40-0xa0 |
8160 | 8160 | 汉字 | |
四字节部分 | 第一字节0x81-0x82 第二字节0x30-0x39 第三字节0x81-0xfe 第四字节0x30-0x39 |
6530 | 6530 | cjk统一汉字扩充a |
第一字节0x95-0x98 第二字节0x30-0x39 第三字节0x81-0xfe 第四字节0x30-0x39 |
42711 | 42711 | cjk统一汉字扩充b |
70244就是6763 6080 8160 6530 42711。
6 结束语
gb2312有6763个汉字,gbk有21003个汉字,gb18030-2000有27533个汉字,gb18030-2005有70244个汉字。
unicode 5.0中,如果不算兼容区,目前有70217个汉字。让我们比较一下unicode的70217汉字和gb18030-2005中的70244汉字:
gb18030-2005 | unicode 5.0 | 对应的unicode编码 |
cjk统一汉字的20902汉字 | cjk统一汉字的20902汉字 | 0x4e00-0x9fa5 |
cjk统一汉字扩充a的6582汉字 | cjk统一汉字扩充a的6582汉字 | 0x3400-0x4db5 |
cjk统一汉字扩充b的42711汉字 | cjk统一汉字扩充b的42711汉字 | 0x20000-0x2a6d6 |
cjk部首补充区的14个部首 | 未计入 | 2e81, 2e84, 2e88, 2e8b, 2e8c, 2e97, 2ea7, 2eaa, 2eae, 2eb3, 2eb6, 2eb7, 2ebb, 2eca |
cjk兼容汉字区的21个汉字 | 未计入 | f92c, f979, f995, f9e7, f9f1, fa0c, fa0d, fa0e, fa0f, fa11, fa13, fa14, fa18, fa1f, fa20, fa21, fa23, fa24, fa27, fa28, fa29 |
“”8个部首 | cjk统一汉字区新增了这8个字符 | 0x9fb4-0x9fbb |
未计入 | cjk统一汉字区新增的14个字符 | 0x9fa6-0x9fb3 |
cjk统一汉字区新增的0x9fa6-0x9fb3这14个字符在gb18030中有对应的码位(0x82358f33-0x82358f39, 0x82359030-0x82359039, 0x82359130-0x82359134),不过gb18030没有列出这些字符。
附录1 gbk增补的80个汉字和部首
gbk增补的80个字符本来是放在pua区的,后来又被unicode收录。所以既可以用pua区的编码表示,也可以用非pua编码表示。正文中的表格可能不便复制,这里补充一张表格:
汉字 | gbk编码 | pua编码 | 非pua编码 |
| fe50 | e815 | 2e81 |
| fe51 | e816 | 20087 |
| fe52 | e817 | 20089 |
| fe53 | e818 | 200cc |
| fe54 | e819 | 2e84 |
| fe55 | e81a | 3473 |
| fe56 | e81b | 3447 |
| fe57 | e81c | 2e88 |
| fe58 | e81d | 2e8b |
| fe59 | e81e | 9fb4 |
| fe5a | e81f | 359e |
| fe5b | e820 | 361a |
| fe5c | e821 | 360e |
| fe5d | e822 | 2e8c |
| fe5e | e823 | 2e97 |
| fe5f | e824 | 396e |
| fe60 | e825 | 3918 |
| fe61 | e826 | 9fb5 |
| fe62 | e827 | 39cf |
| fe63 | e828 | 39df |
| fe64 | e829 | 3a73 |
| fe65 | e82a | 39d0 |
| fe66 | e82b | 9fb6 |
| fe67 | e82c | 9fb7 |
| fe68 | e82d | 3b4e |
| fe69 | e82e | 3c6e |
| fe6a | e82f | 3ce0 |
| fe6b | e830 | 2ea7 |
| fe6c | e831 | 215d7 |
| fe6d | e832 | 9fb8 |
| fe6e | e833 | 2eaa |
| fe6f | e834 | 4056 |
| fe70 | e835 | 415f |
| fe71 | e836 | 2eae |
| fe72 | e837 | 4337 |
| fe73 | e838 | 2eb3 |
| fe74 | e839 | 2eb6 |
| fe75 | e83a | 2eb7 |
| fe76 | e83b | 2298f |
| fe77 | e83c | 43b1 |
| fe78 | e83d | 43ac |
| fe79 | e83e | 2ebb |
| fe7a | e83f | 43dd |
| fe7b | e840 | 44d6 |
| fe7c | e841 | 4661 |
| fe7d | e842 | 464c |
| fe7e | e843 | 9fb9 |
| fe80 | e844 | 4723 |
| fe81 | e845 | 4729 |
| fe82 | e846 | 477c |
| fe83 | e847 | 478d |
| fe84 | e848 | 2eca |
| fe85 | e849 | 4947 |
| fe86 | e84a | 497a |
| fe87 | e84b | 497d |
| fe88 | e84c | 4982 |
| fe89 | e84d | 4983 |
| fe8a | e84e | 4985 |
| fe8b | e84f | 4986 |
| fe8c | e850 | 499f |
| fe8d | e851 | 499b |
| fe8e | e852 | 49b7 |
| fe8f | e853 | 49b6 |
| fe90 | e854 | 9fba |
| fe91 | e855 | 241fe |
| fe92 | e856 | 4ca3 |
| fe93 | e857 | 4c9f |
| fe94 | e858 | 4ca0 |
| fe95 | e859 | 4ca1 |
| fe96 | e85a | 4c77 |
| fe97 | e85b | 4ca2 |
| fe98 | e85c | 4d13 |
| fe99 | e85d | 4d14 |
| fe9a | e85e | 4d15 |
| fe9b | e85f | 4d16 |
| fe9c | e860 | 4d17 |
| fe9d | e861 | 4d18 |
| fe9e | e862 | 4d19 |
| fe9f | e863 | 4dae |
| fea0 | e864 | 9fbb |