庞大而杂乱的文字内码系统

 

我虽然一直搞电脑,而且研究汉字处理,但对本文主题——文字内码,仍未能通晓。但觉得当前大字库内码系统,大而乱,应该研究采用尽可能小的小字库,让电脑键盘像普通笔一样,能自由写任何文字。我是在学习有关资料的基础上写这篇文章的,以我的理解,力求写得浅近,也可供入门者阅读。我的理解,尤其是我作的推论,如果有错误,请高手来信指正。地址: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