什么是 Unicode?
历史上, 有两个独立的, 创立单一字符集的尝试. 一个是国际标准化组织(ISO)的 ISO 10646 项目, 另一个是由(一开始大多是美国的)多语言软件制造商组成的协会组织的 Unicode 项目. 幸运的是, 1991年前后, 两个项目的参与者都认识到, 世界不需要两个不同的单一字符集. 它们合并双方的工作成果, 并为创立一个单一编码表而协同工作. 两个项目仍都存在并独立地公布各自的标准, 但 Unicode 协会和 ISO/IEC JTC1/SC2 都同意保持 Unicode 和 ISO 10646 标准的码表兼容, 并紧密地共同调整任何未来的扩展.
Unicode vs ISO 10646
Unicode 协会公布的 Unicode 标准 严密地包含了 ISO 10646-1 实现级别3的基本多语言面. 在两个标准里所有的字符都在相同的位置并且有相同的名字.
Unicode 标准额外定义了许多与字符有关的语义符号学, 一般而言是对于实现高质量的印刷出版系统的更好的参考. Unicode 详细说明了绘制某些语言(比如阿拉伯语)表达形式的算法, 处理双向文字(比如拉丁与希伯来文混合文字)的算法和 排序与字符串比较 所需的算法, 以及其他许多东西.
另一方面, ISO 10646 标准, 就象广为人知的 ISO 8859 标准一样, 只不过是一个简单的字符集表. 它指定了一些与标准有关的术语, 定义了一些编码的别名, 并包括了规范说明, 指定了怎样使用 UCS 连接其他 ISO 标准的实现, 比如 ISO 6429 和 ISO 2022. 还有一些与 ISO 紧密相关的, 比如 ISO 14651 是关于 UCS 字符串排序的.
考虑到 Unicode 标准有一个易记的名字, 且在任何好的书店里的 Addison-Wesley 里有, 只花费 ISO 版本的一小部分, 且包括更多的辅助信息, 因而它成为使用广泛得多的参考也就不足为奇了. 然而, 一般认为, 用于打印 ISO 10646-1 标准的字体在某些方面的质量要高于用于打印 Unicode 2.0的. 专业字体设计者总是被建议说要两个标准都实现, 但一些提供的样例字形有显著的区别. ISO 10646-1 标准同样使用四种不同的风格变体来显示表意文字如中文, 日文和韩文 (CJK), 而 Unicode 2.0 的表里只有中文的变体. 这导致了普遍的认为 Unicode 对日本用户来说是不可接收的传说, 尽管是错误的.
ASCⅡ码
计算机内部采用二进制的方式计数,那么它为什么又能识别十进制数和各种字符、图形呢?其实,不论是数值数据还是文字、图形等,在计算机内部都采用了一种编码标准。通过编码标准可以把它转换成二进制数来进行处理,计算机将这些信息处理完毕再转换成可视的信息显示出来。常用的字符代码是ASCII码,它原来是美国的国家标准,1967年被定为国际标准。
ASCII码由8位二进制数组成,其中最高位为较验位,用于传输过程检验数据正确性。其余7位二进制数表示一个字符,共有128种组合。如回车的ASCII码为0001101(13),空格的ASCII码为0100000(32),“0” 的ASCII码为0110000(48),“A” 的ASCII码为1000001(65),“a”的ASCII码为1100001(97)。
Hanzi bianma汉字编码Chinese character encoding
为汉字设计的一种便于输入计算机的代码。由于电子计算机现有的输入键盘与英文打字机键盘完全兼容。因而如何输入非拉丁字母的文字(包括汉字)便成了多年来人们研究的课题。
汉字信息处理系统一般包括编码、输入、存储、编辑、输出和传输。编码是关键。不解决这个问题,汉字就不能进入计算机。
汉字进入计算机的三种途径 分别为:
①机器自动识别汉字:计算机通过“视觉”装置(光学字符阅读器或其他),用光电扫描等方法识别汉字。
②通过语音识别输入:计算机利用人们给它配备的“听觉器官”,自动辨别汉语语音要素,从不同的音节中找出不同的汉字,或从相同音节中判断出不同汉字。
③通过汉字编码输入:根据一定的编码方法,由人借助输入设备将汉字输入计算机。
机器自动识别汉字和汉语语音识别,国内外都在研究,虽然取得了不少进展,但由于难度大,预计还要经过相当一段时间才能得到解决。在现阶段,比较现实的就是通过汉字编码方法使汉字进入计算机。
汉字编码的困难点 汉字进入计算机,有许多困难,其原因主要有三点:
①数量庞大:随着社会的发展,新字不断出现,死字没有淘汰,汉字总数不断增多。一般认为,现在汉字总数已超过6万个(包括简化字)。虽有研究者主张规定3000多或4000字作为当代通用汉字,但仍比处理由二三十个字母组成的拼音文字要困难得多。
②字形复杂:有古体今体,繁体简体,正体异体;而且笔画相差悬殊,少的一笔,多的达36笔,简化后平均为9.8笔。
③存在大量一音多字和一字多音的现象:汉语音节416个,分声调后为1295个(根据《现代汉语词典》统计,轻声39个未计)。以1万个汉字计算,每个不带调的音节平均超过24个汉字,每个带调音节平均超过7.7个汉字。有的同音同调字多达66个。一字多音现象也很普遍。
五种类型的编码法 据粗略统计,现有400多种编码方案,其中上机通过试验的和已被采用作为输入方式的也有数十种之多。归纳起来,不外5种类型:
①整字输入法:前一阶段,一般是将三四千个常用汉字排列在一个具有三四百个键位的大键盘上。近来,大多是将这些汉字按XY坐标排列在一张字表上,通常叫“ 字表法”,或“笔触字表法”。比如,X25行和Y90列交叉的字为“国”,当电笔点到字表上的“国”字时,机器自动将该字的代码2590输入。键盘上或字表中字按部首或按音序或按字义联想而排列。不常用的字作为盘外字或表外字,另行编码处理。
②字形分解法:将汉字的形体分解成笔画或部件,按一定顺序输进机器。笔画一般分成 8种:横(一)、竖(丨)、撇(丿)、点(丶)、折(□)、弯(□)、叉(十)、方(口)。部件一般归纳出一二百个。由于一般键盘上只有42个键(包括数字和标点),容纳不下这么多部件,因而有人设计中键盘,也有人利用部件形体上的相似点或出现概率的不同,而把100多个部件分布在26个字母键上。
③字形为主、字音为辅的编码法:这种编码法与字形分解法的不同在于还要利用某些字音信息。如有的方案为了简化编码规则,缩短码长,在字形码上附加字音码,有的方案为了采用标准英文电传机,将分解归纳出来的字素通过关系字的读音转化为拉丁字母。
④全拼音输入法:绝大多数是以现行的汉语拼音方案为基础进行设计。关键问题是区分同音字,因而有的方案提出“以词定字”的方法,还有的方案提出“拼音-汉字转换法”,即“汉语拼音输入 ——机内软件变换(实为查机器词表)——汉字输出”系统。
⑤拼音为主、字形为辅的编码法:一般在拼音码前面或后面再添加一些字形码。拼音码有用现行汉语拼音方案或稍加简化的,还有的为了缩短码长而把声母和韵母都用单字母或单字键表示的“双拼方案”或“双打方案”。如F键既表声母F,又表韵母ang,连击两下,便是Fang“方”字。区分同音字的字形码也多种多样。除了大部分采用偏旁部首的信息外,还有采用起末笔或采用语义类别的。
上述各种编码法,各有短长。例如,字表法的特点是一字一格(键),无重码,直观性好,操作简单。缺点是需特制键盘,速度较慢。字形分解法的好处是按形取码,不涉及字音,因而不认识的字(包括生僻字、古字)也同样可以编码输入;但汉字形体结构非常复杂,写法也有许多差异,分解标准不易统一,因而不少方案规则较多。拼音输入法(包括拼音-汉字转换法)的优点是操作简捷,可以“盲打”,不受汉字简化、字形改变的影响,符合拼音化方向,并且还便于作进一步信息处理;缺点是不认识的字无法输入;另外,如果不加字形码或不用以词定字法或显式选择法,同音字较难处理。
双轨制编码 汉语拼音推广应用,并逐步过渡到汉字和汉语拼音文字并存并用,这是一种双轨制。汉字信息处理领域中,音码和形码的并存并用,同样是一种双轨制。因此,不少人认为,采用双轨制好,理由有以下5点:
①对掌握普通话的人来说,使用音码比形码方便,速度比较快。形码虽然较慢,但能输入任何汉字(包括古字)。采用双轨,操作员认识的字可按音输入,不认识的字按形输入,会普通话的人可按音输入,方音重的人可按形输入。
②对于用字量少的单位,按音输入无问题,但对用字量多的单位来说,按音输入就不如按形输入,因为一般人只能念出一部分汉字。
③按形输入(尤其是整体输入)对于中文信息处理的某类工作,如统计汉字,非常适合;但是对于其他类工作,例如统计汉语的音(声韵调)则无能为力。按音输入则正相反。双轨正好是相辅相成。
④有的形码可以照顾多种汉字(如日本的汉字、南朝鲜的汉字),而音码能分词连写,便于作进一步的信息处理。
⑤适当的双轨方案,不会增加设备上的麻烦。如不考虑采用整字输入,一般均可使用现有的小键盘。
汉字编码研究的新发展 除了单轨向双轨发展之外,还有下列趋势:
①混合式编码法。笔触字表示法中除整体字之外,增加一些部件或字元,可以解决盘外字问题,甚至能具有字形分解法的全部优点。而笔画方案为了提高速度,一般也增加一些部件或整字。
②充分利用简码和词汇码。这样可以提高输入速度。因而人们为少量出现频率高的字或词设计了单字母和双字母的简码。
词汇码也是提高速度的手段。有一种形码方案的词汇码是根据每个字的部件规定的,如“汉字编码”的词汇码是43、45、55、13(氵冖纟石)。另一种形码方案的词汇码是利用计算机引导方式输入的。例如,当“中”字输入后,一按语词键,屏幕上便显示出“中国”、“中型”、“中性”、“中华”等双音词;选择“ 中国”后,如再按一下语词键,便可显示出“(中国)话”、“(中国)人民”、“(中国)共产党、”、“(中国)工农红军”等词或词组。音码方案的词汇码实际上为词组码,如 ZRG“中华人民共和国”,ZZXY“中国中文信息研究会”。词汇码不仅能提高速度,而且也能区别同码。但是,如果用得太多,也会产生重码。因此,有必要划分通用词汇码和专业词汇码,以减少重码。
③充分发挥“电脑”的作用,尽量减少“人脑”的负担。上述计算机引导输入法就是一例。还有的方案不断以开窗口方式向操作员提供选择的范围。这样,操作员不必再记忆大量的编码规则。
编码工作中的定型化和标准化编码方案的定型化,即一般所说的选优工作,对计算机的普及应用非常重要。当然,定型或选优并不意味着只定一种或只选一种,而要照顾到多种用户的需要。关于选优,曾提出多种评定标准,一般包括字码无二义性、操作方便易学、输入和处理效率高、存储节省、传输可靠、设备经济实用、组词能力强。
编码方案繁多,需要有一个统一的标准。1981年,国家标准局公布了《信息交换用汉字编码字符集基本集》(简称汉字标准交换码),共分两级,一级3755 个字,二级3008个字,共6763个字。这种汉字标准交换码是计算机的内部码,可以为各种输入输出设备的设计提供统一的标准,使各种系统之间的信息交换有共同一致性,从而使信息资源的共享得以保证。目前,正在制定《信息交换用汉字编码字符集辅助集》,以满足少数用字量超过基本集的用户和台湾、香港等地的需要。
内部用的含汉字的机内码 也叫内码。
每个汉字在机器内部只有唯一的内码,是由两个字节组成的。
国家标准汉字字符集GB2312-80共收集了共7445个汉字和图形符号,其中汉字6763个,分为二级,一级汉字3755个,二级汉字3008个。汉字图形符号根据其位置将其分为94个“区”,每个区包含94个汉字字符,每个汉字字符又称为一个“位”。区的序号和位的序号都是从01到94,
UCDOS软件中的文件HZK16和文件ASC16分别为16×16的国标汉字点阵文件和8×16的ASCII码点阵文件,以二进制格式存储。在文件HZK16中,按汉字区位码从小到大依次存有国标区位码表中的所有汉字,每个汉字占用32个字节,每个区为94个汉字。在文件ASC16中按ASCII码从小到大依次存有8×16的ASCII码点阵,每个ASCII码占用16个字节。
在PC机的文本文件中,汉字是以机内码的形式存储的,每个汉字占用两个字节:第一个字节为区码,为了与ASCII码区别,范围从十六进制的0A1H开始(小于80H的为ASCII码字符),对应区位码中区码的第一区;第二个字节为位码,范围也是从0A1H开始,对应某区中的第一个位码。这样,将汉字机内码减去0A0A0H就得该汉字的区位码。
例如汉字“房”的机内码为十六进制的“B7BF”,其中“B7”表示区码,“BF”表示位码。所以“房”的区位码为0B7BFH-0A0A0H=171FH。将区码和位码分别转换为十进制得汉字“房”的区位码为“2331”,即“房”的点阵位于第23区的第31个字的位置,相当于在文件HZK16中的位置为第32×[(23-1) ×94+(31-1)]=67136B以后的32个字节为“房”的显示点阵。
ASCII码的显示与汉字的显示原理相同,在ASC16文件中不存在机内码的问题,其显示点阵直接按ASCII码从小到大依次排列,不过每个ASCII码在文本中只占1个字节并且小于80h,每个ASCII码为8X16点阵,即在ASCII16文件中,每个ASCII码的点阵也只占16个字节。