庞大而杂乱的文字内码系统
我虽然一直搞电脑,而且研究汉字处理,但对本文主题——文字内码,仍未能通晓。但觉得当前大字库内码系统,大而乱,应该研究采用尽可能小的小字库,让电脑键盘像普通笔一样,能自由写任何文字。我是在学习有关资料的基础上写这篇文章的,以我的理解,力求写得浅近,也可供入门者阅读。我的理解,尤其是我作的推论,如果有错误,请高手来信指正。地址:chancezoo@126.com
一、代码页:字库加编码
与拍电报要把文字转变为电报码一样,电脑处理文字,也要先转变为电脑能识别的信息交换码。电脑只能分辨用电压高低表示的0和1,所以毎一个文字的代码都是特定的二进制数。电脑的存贮是以8个二进制位为单位,叫做字节,通常表示为二个各由4个二进制位组成的十六进制字符(012……9AB……F),从最小值00到最大值FF(8个二进制位均为1,等于十进制255),只有256种不同的值,只能表示ASCII(美国信息交换标准代码)字符。实际上可显示的ASCII字符不到100个,开头32个是不能显示的控制码,如07为嘟一声,0A为换行,0D为回车,1B为键盘左上角的逃脱键。从空格20开始才是真正的ASCII字符,如30…39是十个数字0…9,41…5A是A…Z,61…7A是a…z。从20到7F的96个代码,每个都有一组数据,用来显示它所代表的字形。这些数据组成一个ASCII字库,只不过不如汉字字库那么大。可见,电脑一开始就用“字库加编码”的方法来处理文字的。我以前说,汉字植根于电脑的方法,一开始就错用了“字库加编码”的方法,这个说法不大确切,应该说是错用了大字库的方法。
从00到7F的128个代码,最高位为0,是基本拉丁字符,最高位为1的另外128个代码,是基本拉丁字符的扩展码,多为制表符等图形。英文以外的拼音文字,还有一些与拉丁字母不同的字母,它们也被安排在扩展码中。像中文那样,字符特多,更要两个以上这样的字节。总之,不同国家和地区的不同文字,编码安排不一样,字库内容不相同,分别用一个叫代码页的数值来区别。常见的代码页有:美国37,英国285,德国273,中国大陆(简体)936,中国台湾(繁体)950,日语932等。不过所有代码页中,都包含00……7F的基本拉丁字符。
二、汉字的大字库
汉字数目太多,现在已有7万甚至10万的字库,可以说没有定数。这本不奇怪,英文字(词)的数量其实还要多10倍。只是他们不对这些巨量的字词编码和设计字模,而是让它们都由52个字母组成。我们的汉字也应该只对笔画、最多再加少量字根进行编码,其他汉字都由它们组成。可惜当时没有、也不可能解决笔画组字的技术,我们只能直接对汉字本身编码了。大陆第一个编码是1980年的国标码GB2312,共收录了7445个字符,包括6763个汉字和682个其它符号。由于
1、
字符数超过256,必须用2个字节;
2、
为了兼容基本拉丁字符,只能用高位为1的扩展字节;
3、
当字符送去显示时,过去计算机硬件和软件会把高位的1屏蔽掉,小于A0的32个高位为1的字节,就会变成控制码,所以要避开不用。
这样,每个字节只能用A0……FF的96个码位,除去首尾A0、FF这两个,实用A1……FE共94个码位。两字节码中高字节相同的组成一个区,区有区号;低字节对应同一区中94个位号;这就是字符的区位码。高字节值从A1……AF的前15区安排着制表符、注音符号、假名、希腊字母、俄文字母等。其中也包括另一套拉丁字母,不过它们每个字母与汉字一样,不但内码要两字节,显示时也占一个汉字的位置,即所谓全角字符,而原来的ASCII字符是半角字符,窄一半。真正的汉字区,内码范围:高字节从B0…F7,低字节从A1…FE。高字节从B0…D7(第16-55区)的40区3755个(最后5个空位)称为一级汉字,按拼音排序;D8…F7(第56-87区)的3008个是二级汉字,按部首排序;共占用的码位是72*94=6768。除了两级汉字中间有5个空位外,前15区中也有空位,87区后全空着,都可以按放自造字,不过自造字不能供其他人公用。
港台不仅用繁体字,而且编码完全不同。台湾原来有倚天、王安等多种编码,1984年宏碁等5个单位创立大五码Big5,高字节也限为A1……FE,低字节还增加4E……7E,收字数达13053。同一种文字,有不同的编码,必然要出现乱码:用甲码输入的字,按乙码去显示,自然会面目全非。所以,台湾发来的信件,全是乱码,必须进行内码转换后才能阅读。现在好了,浏览器、编辑器太多可以很方便地转换,如果出现乱码,可点一下鼠标换个内码试试。
不唯海峡两岸编码不同,同是大陆,都由国家制定,不同时期编码也不一样。且码本种类繁多,连名称也不容易搞清楚,我只说主要的,也不引用长长的全名。由于GB2312支持的汉字太少,1993年的GB13000.1增加到20902个,包括中日韩CJK三国的汉字。1995年的汉字扩展规范GBK1.0收录了21003个汉字。2000年的GB18030是取代GBK1.0的正式国家标准,收录了27484个汉字。这些字库都向下兼容,都包含GB2312的6763个汉字及其编码。为了容纳更多的汉字,内码高字节向上扩展到81,低字节向上扩展到40(以后进一步扩展到30),但不含7F,增加的汉字就插到新扩展区中。汉字至今还没有科学的排序方法,GB2312的两级字库,是按使用频数分的,已不是按同一标准排序,后增的更没有公认的次序了。使用者实难从众多无序的字库中找出需要的,这忙坏了输入法的研制者,即使“万马奔腾”也无满意的结果。
本来,有了大汉字库,应该不会写错字,最多写别字。可是最近网上揭示,发现了一些“电脑错字”。电脑错字与以前写错字不同,使用者不能纠正它。那是因为这个字的码位上放的字模错了,谁都得“将错就错”,一直错下去。其原因可能是字库设计者的错,也可能是字库文件的意外损坏。如果属后一情况,一般已不能成字,如果整个字模被抹去了,就成为空白。如果是字库文件损坏,常常换一个机子,或只换一种字体就正常了。还发现有汉字安排重覆的。更有输入提示栏对,显示却不正确;或输入是鱼字旁,结果变成角字旁等等。总之,由于字数太多,难免出错,出了错,也难找原因改正。
三、统一码杂而乱
我写了几篇文章,多次分析了中文信息处理采用大字库产生的许多问题,上一节只说明了其中的一点,即特大字库必然会杂而乱,难于维护与管理。想不到国际组织竟认同大字库方法。当互联网的发展,使全世界成为一个地球村时,各民族文字都要求、也应当一视同仁,能够在同一网页上显示。宇宙间的文字字形何止千万。于是有了统一码Unicode,总码位达20亿,目前还只用了一点点,可能几十年、上百年也用不光。设计Unicode的组织有两个,即国际标准化组织(ISO)和一个软件制造商的协会(unicode.org)。ISO开发了ISO
10646项目,Unicode协会开发了Unicode项目。在1991年前后,开始合并双方的工作成果,并为创立一个单一编码表而协同工作。从Unicode2.0开始,Unicode项目采用了与ISO
10646-1相同的字库和字码。目前两个项目仍都存在,并独立地公布各自的标准。Unicode协会现在的最新版本是2005年的Unicode 4.1.0。ISO的最新标准是10646-3:2003。
统一码最多可用4个字节表示一个字符,称为UCS-4。UCS-4的最高字节的最高位为0,根据该字节的值分成2^7=128个类。每个类再根据次高字节分为256个平面。每个平面根据第3个字节分为256行,每行包含256个码位。
0类的0平面被称作基本平面, 简称BMP。或者说UCS-4中,最高两个字节为0的码位被称作BMP。将UCS-4的BMP去掉前面的两个零字节就得到了两字节的UCS-2。在UCS-2的两个字节前加上两个零字节,就恢复为UCS-4的BMP。目前的UCS-4规范中被应用的部分绝大部分还在BMP之内,它们是由各国申请决定的,像注册域名一样。已经有的统一码安排见本文末附表,这是我从软件BabelMap上抄下来的。
请仔细阅读这张表,看看能得出什么印象。该表按码位自然次序列出了已确定的133个字符区,各区所在的平面(USC-4的第二字节),区域名、该区的起止范围(第二到第四字节)、字符数及首次引入的Unicode版本。我在最后加了一列,是依次序排的区号,以便于叙述。我们先叙述该表的以下情况:
(1)该表只涉及第一类,即最高字节为0者,非0的127类完全没有动。第一类中也只涉及0、1、2、14、15、16这6个平面,另外的250个平面也没有动。
(2)各区大小相差悬殊。最大的除最末2区为65534,就是有42711个汉字的128区“CJK汉字扩展-B”,最小的只有16个码位,如64、78、102、104、109区。
(3)区的实际大小,与实有字符数并不一定相符,有时相差还很远,即空位很多,如75区有空间128个码位,现在只有26个字符。
(4)各区之间并不是都相互衔接的。第2和第14平面都只有两区,两区之间都有没用的空间。第1平面只有18区,它们之间也有很多不衔接的。0平面基本用光了,但它所有的109个区之间也有空隙,如11-12,35-36,40-41,70-71,74-75,77-78之间,而94到98区,相邻两区之间都有空隙。
(5)最后一个重要情况是,有些国家的文字,占着2个以上的区,而且,很多区是不相互衔接的。区数最多的是中文,共有18个区,包括76-79、82、84-86、88-92、95、99、105、128-129区。其次是朝鲜文、阿拉伯文、彝文,字符数目也比较多。拉丁文虽也占首4个区,但连在一起。
由以上5条能得出什么印象呢?首先,就算这6个平面都安排满了,也只占第1类的6/256≈1/43,只占全部空间的1/128*43=1/5504,没有动用的统一码空间可能够未来几个世纪的需要了。对这么大的空间,已有的安排只能说是刚刚开始,但一开始就很混乱。各国文字的字符数多少不一,一国的文字,特别是字符数多的,常有不同的层次,在不同的时间申请安排,就必然要相互犬牙交错了。这种混乱以后更要继承和发展,不可能纠正,因为码表一变动,过去信息化的成果就要付诸东流了。
四、小字库是方向
所以,大字库方法是不可取的。字库大,自然不能一次完成,建成后也难以适应以后变化了的情况,故不稳定。字库太大,安排字符编码时就易出错,设计字形更易出错,维护也困难。原来两岸汉字由于编码不统一,所以出现乱码。现在有了统一码,码是统一了,却又出现了“电脑错字”,而且是使用者发现错了也不能纠正的。可见大字库的研制和维护都很困难,又只能由专门人材进行。另外,使用者必须靠复杂的输入法软件才能使用,而编研这种软件的困难随着字符数的增加而增加。字库字数一扩充,对扩充的新字,老输入法是无能为力的。目前,硬件的发展虽然使系统中装全所有文字字库是可能的,但使用统一码最多可以同时阅读包含多种文字的文件,而要自己写文章时同时使用许多种文字,即使有这样的字处理软件,恐怕也没几人用得了,因为要同时掌握各种文字的输入法。我们知道要学会一种汉字输入法已不容易,要同时学会不同文字的输入法谈何容易。
大字库的另一个问题是效率低下。人类创造的字符难以计数,但不同字符的使用频度相差悬殊。汉字字数最多,即使以常用字4-5000个为基数,占基数千分之二的前8个字,使用总频度就占了一成,占基数百分之二的前100个字,使用总频度占了四成。英文也一样,字母E的使用频率占13%,而字母Z的使用频率要小200倍。如果能统计世界所有字符的总体使用情况,对比会更加强烈。但是,目前信息编码都是用等长码,UCS4都用4字节(32比特)。原来ASCII字符只要1字节(如果只有拉丁字母只要5比特)的,也要用4字节。现在实际上没让ASCII字符多化4倍,那是以增加其他字符的标志为代价的。我们仅以8比特为单位传送信息的UTF-8编码为例,看它是如何处理UCS-2的字符的。因为一字节的最高位为0是使基本拉丁字符作为单字节传送的特征,其他传送字节必须高位都为1。以前我们的国标码也是用2个高位为1的字节来表示,但这最多只能为128*128=16384个汉字编码(而现在在2字节的USC-2中,汉字占了近3万码位)。用过那时的DOS汉字系统的人都碰到过,由于高低两字节没有区别,如果文件中间丢了一个字节,那么其后的汉字就会错乱,前字的低字节和后字的高字节併成字,结果面目全非。所以如下表所示,UTF-8中要用110标志第一字节,用10标志第二字节,这样一来,2字节只能传1920种UCS-2字符,其余第12区以上的字符都要用3个字节来传输了,它的第一字节标志是1110。不幸得很,我们的汉字都处在12区之后,都要3字节。查11到12区之间还空1360个码位,我们应去抢注为汉字字根区。
UCS-2编码(16进制) UTF-8 字节流(二进制) 字符总数
0000 - 007F 0xxxxxxx
128
0080 - 07FF 110xxxxx
10xxxxxx
1920
0800 - FFFF 1110xxxx 10xxxxxx
10xxxxxx
63488
拼音文字,如英文,其字库就是字母库,只有52个字符,非常小。英文字虽然上百万,死字一定也不少,没人用它,也不影响其他字的使用。另一方面,不论造多少新字,也不要什么输入法,只要会使用原来的52个字母便可。即使在字母不十分稳定的时期,例如发生一分为二或合二为一时,或增加新字母,甚或换一套全新的字母,都不影响原有存贮的历史资料。万一需要转换,也很容易。我的试验证明,汉字也可以用同样的小字库,即用与英文字母数目差不多的笔画库,为了方便最多再加一、二千个字根和常用字。这样一来,也没有输不进去的字,因为你可以依样画葫芦地拼出来。像用笔写错字一样,可能出现拼错,但这不是“电脑错字”,只存在于个别人的个别文章中,而且大部分还不会影响阅读。
既然汉字型文字像拼音文字那样可由笔画组成。进一步考虑所有拼音文字的字母,加上所有汉字型笔画,字符总数还是不少的。我们能不能再从它们中提取更少量最基本的,我暂称之为元笔画,以后只要这个元笔画库,就可组出世界上一切文字来。当然,不同文字可以有一套自己的字母、笔画或字根,学会该文字的人能使用它们。不懂该文字的,可以只用元笔画依样画葫芦地打出,最多字形不好看或不标准罢了。我们应该研究这样的系统,让电脑也像普通笔一样,可以自由地写出各种字形,而少受字库内容的限制。
附表: 已经安排的统一码
平面 区域名 范围起止 字符数 引入版本 区号
0 基本拉丁文 000000—00007F 128 Unicode 1.0.0 1
0 拉丁文-1补充 000080—0000FF 128 Unicode 1.0.0 2
0 拉丁文扩展-A 000100—00017F 128 Unicode 1.0.0 3
0 拉丁文扩展-B 000180—00024F 194 Unicode 1.0.0 4
0 国际音标扩展 000250—0002AF 96 Unicode 1.0.0 5
0 进格修饰字符 0002B0—0002FF 80 Unicode 1.0.0 6
0 组合区分标志 000300—00036F 112 Unicode 1.0.0 7
0 希腊文和古埃及文(科普特文) 000370—0003FF 124 Unicode 1.0.0 8
0 西里尔文 000400—0004FF 248 Unicode 1.0.0 9
0 西里尔文补充 000500—00052F 16 Unicode 3.2 10
0 亚美尼亚文 000530—0005AF 86 Unicode 1.0.0 11
0 奥利雅文(Driya) 000B00—000B7F 81 Unicode 1.0.0 12
0 奥米尔文 000B80—000BFF 71 Unicode 1.0.0 13
0 泰卢固文 000C00—000C7F 80 Unicode 1.0.0 14
0 埃纳德文(Kannada) 000C80—000CFF 82 Unicode 1.0.0 15
0 德拉维族文(Malayalam) 000D00—000D7F 78 Unicode 1.0.0 16
0 僧伽罗文(錫兰文) 000D80—000DFF 80 Unicode 3.0 17
0 泰文 000E00—000E7F 87 Unicode 1.0.0 18
0 老挝文 000E80—000EFF 65 Unicode 1.0.0 19
0 藏文 000F00—000FFF 195 Unicode 2.0 20
0 缅甸文 001000—00109F 78 Unicode 3.0 21
0 格鲁吉亚文 0010A0—0010FF 83 Unicode 1.0.0 22
0 朝鲜文字母 001100—0011FF 240 Unicode 1.1 23
0 埃塞俄比亚文 001200—00137F 356 Unicode 3.0 24
0 埃塞俄比亚文补充 001380—00139F 26 Unicode 4.1 25
0 切罗基族文(Cherrokee) 0013A0—0013FF 85 Unicode 3.0 26
0 加拿大土著统一音节(UCAS) 001400—00167F 630 Unicode 3.0 27
0 欧甘文 001680—00169F 29 Unicode 3.0 28
0 古北欧文(Rnic) 0016A0—0016FF 81 Unicode 3.0 29
0 他加禄文 001700—00171F 20 Unicode 3.2 30
0 哈鲁喏文(Hanunoo) 001720—00173F 23 Unicode 3.2 31
0 Buhid 001740—00175F 20 Unicode 3.2 32
0 Tagbanwa 001760—00177F 18 Unicode 3.2 33
0 高棉文 001780—0017FF 114 Unicode 3.0 34
0 蒙古文 001800—0018AF 155 Unicode 3.0 35
0 林布文(limbu) 001900—00194F 66 Unicode 4.0 36
0 傣仂文(Tai Le) 001950—00197F 35 Unicode 4.0 37
0 新傣仂文(New Tai Le) 001980—0019DF 80 Unicode 4.1 38
0 高棉文符号 0019E0—0019FF 32 Unicode 4.0 39
0 吉布文(Buginese) 001A00—001A1F 30 Unicode 4.1 40
0 音标扩展 001D00—001D7F 128 Unicode 4.0 41
0 音标扩展补充 001D80—001DBF 64 Unicode 4.1 42
0 组合区分标志扩展 001DC0—001DFF 4 Unicode 4.1 43
0 拉丁文附加扩展 001E00—001EFF 246 Unicode 1.1 44
0 希腊文扩展 001F00—001FFF 233 Unicode 1.1 45
0 通用标点符号 002000—00206F 106 Unicode 1.0.0 46
0 上标和下标 002070—00209F 34 Unicode 1.0.0 47
0 货币符号 0020A0—0020CF 22 Unicode 1.0.0 48
0 符号用组合区分标志 0020D0—0020FF 28 Unicode 1.0.0 49
0 类字母符号 002100—00214F 77 Unicode 1.0.0 50
0 数字形式 002150—00218F 49 Unicode 1.0.0 51
0 箭头 002190—0021FF 112 Unicode 1.0.0 52
0 数学运算符号 002200—0022FF 256 Unicode 1.0.0 53
0 混合技术 002300—0023FF 220 Unicode 1.0.0 54
0 控制图符 002400—00243F 39 Unicode 1.0.0 55
0 光学字符识别(OCR) 002440—00245F 11 Unicode 1.0.0 56
0 括号型字母数字 002460—0024FF 160 Unicode 1.0.0 57
0 制表符 002500—00257F 128 Unicode 1.0.0 58
0 方块元素 002580—00259F 32 Unicode 1.0.0 59
0 几何形状 0025A0—0025FF 96 Unicode 1.0.0 60
0 杂项符号 002600—0026FF 175 Unicode 1.0.0 61
0 装饰标志(丁贝符) 002700—0027BF 174 Unicode 1.0.0 62
0 数学杂项符号-A 0027C0—0027EF 35 Unicode 3.2 63
0 箭头补充-A 0027F0—0027FF 16 Unicode 3.2 64
0 盲文 002800—0028FF 256 Unicode 3.0 65
0 箭头补充-B 002900—00297F 128 Unicode 3.2 66
0 数学杂项符号-B 002980—0029FF 128 Unicode 3.2 67
0 数学运算符号补充 002A00—002AFF 256 Unicode 3.2 68
0 杂项符号和箭头 002B00—002BFF 20 Unicode 4.0 69
0 格拉哥里字母(Glagolitie) 002C00—002C5F 94 Unicode 4.1 70
0 古埃及文(科普特文) 002C80—002CFF 114 Unicode 4.1 71
0 格鲁吉亚文补充 002D00—002D2F 38 Unicode 4.1 72
0 提非纳文(Tifinagh) 002D30—002D7F 55 Unicode 4.1 73
0 埃塞俄比亚文扩展 002D80—002DDF 79 Unicode 4.1 74
0 标点符号补充 002E00—002E7F 26 Unicode 4.1 75
0 CJK部首补充 002E80—002EFF 115 Unicode 3.0 76
0 康熙部首 002F00—002FDF 214 Unicode 3.0 77
0 汉字结构描述字符 002FF0—002FFF 12 Unicode 3.0 78
0 CJK符号和标点符号 003000—00303F 64 Unicode 1.0.0 79
0 平假名 003040—00309F 93 Unicode 1.0.0 80
0 片假名 0030A0—0030FF 96 Unicode 1.0.0 81
0 注音符号 003100—00312F 40 Unicode 1.0.0 82
0 朝鲜文兼容字母 003130—00318F 94 Unicode 1.0.0 83
0 汉字注释 003190—00319F 16 Unicode 1.0.0 84
0 注音符号扩展 0031A0—0031BF 24 Unicode 3.0 85
0 CJK笔画 0031C0—0031EF 16 Unicode 4.1 86
0 片假名音标扩展 0031F0—0031FF 16 Unicode 3.2 87
0 CJK括号型字母和月份 003200—0032FF 242 Unicode 1.0.0 88
0 CJK兼容汉字 003300—0033FF 256 Unicode 1.0.0 89
0 CJK统一汉字扩充-A 003400—004DBF 6582 Unicode 3.0 90
0 易经六十四卦象 004DC0—004DFF 64 Unicode 4.0 91
0 CJK统一汉字 004E00—009FFF 20924 Unicode 1.0.1 92
0 彝文音节 00A000—00A48F 1165 Unicode 3.0 93
0 彝文部首 00A490—00A4CF 55 Unicode 3.0 94
0 修饰性声调字母 00A700—00A71F 23 Unicode 4.1 95
0 Syloti Negri 00A800—00A82F 44 Unicode 4.1 96
0 朝鲜文拼音音节 00AC00—00D7AF 11172 Unicode 2.0 97
0 私用区(PUA) 00E000—00F8FF 6400 Unicode 1.0.0 98
0 CJK兼容字符 00F900—00FAFF 467 Unicode 1.0.1 99
0 字母变体显现形式 00FB00—00FB4F 58 Unicode 1.1 100
0 阿拉伯文变体显现形式-A 00FB50—00FDFF 595 Unicode 1.1 101
0 字形变换选择器 00FE00—00FE0F 16 Unicode 3.2 102
0 整排形式 00FE10—00FE1F 10 Unicode 4.1 103
0 半形组合标志 00FE20—00FE2F 4 Unicode 1.1 104
0 CJK兼容形式 00FE30—00FE4F 32 Unicode 1.0.0 105
0 小写变体 00FE50—00FE6F 26 Unicode 1.0.0 106
0 阿拉伯文变体显现形式-B 00FE70—00FEFF 141 Unicode 1.0.0 107
0 半形及全形字符 00FF00—00FFEF 225 Unicode 1.0.0 108
0 特殊区域 00FFF0—00FFFF 5 Unicode 1.0.0 109
1 B类线形音节文字 010000—01007F 88 Unicode 4.0 110
1 B类线形像形文字 010080—0100FF 123 Unicode 4.0 111
1 爱琴海数字 010100—01013F 57 Unicode 4.0 112
1 古希腊数字 010140—01018F 75 Unicode 4.1 113
1 古意大利文 010300—01032F 35 Unicode 3.1 114
1 哥特文 010330—01034F 27 Unicode 3.1 115
1 乌加里特文 010380—01039F 31 Unicode 4.0 116
1 古波斯文 0103A0—0103DF 50 Unicode 4.1 117
1 犹太州大学音标(Deseret) 010400—01044F 80 Unicode 3.1 118
1 肖伯纳字母 010450—01047F 48 Unicode 4.0 119
1 Osmanya 010480—0104AF 40 Unicode 4.0 120
1 塞浦路斯音节 010800—01083F 55 Unicode 4.0 121
1 卡罗须提文(Kharoshthi) 010A00—010A5F 65 Unicode 4.1 122
1 拜占庭音乐符号 01D000—01D0FF 246 Unicode 3.1 123
1 音乐符号 01D100—01D1FF 219 Unicode 3.1 124
1 古希腊音乐符号 01D200—01D24F 70 Unicode 4.1 125
1 太玄经符号 01D300—01D35F 87 Unicode 4.0 126
1 数学字母数字符号 01D400—01D7FF 994 Unicode 3.1 127
2 CJK统一汉字扩展-B 020000—02A6DF 42711 Unicode 3.1 128
2 CJK兼容汉字补充 02F800—02FA1F 542 Unicode 3.1 129
14 语言编码标签 0E0000—0E007F 97 Unicode 3.1 130
14 字形变换选择器补充 0E0100—0E01EF 240 Unicode 4.0 131
15 私用区补充-A(SPUA-A) 0F0000—0FFFFF 65534 Unicode 2.0 132
16 私用区补充-B(SPUA-B) 100000—10FFFF 65534 Unicode 2.0 133
庉