本发明涉及一种汉字编码方法,以及与此密切相关的重码处理方法。适用于计算机汉字信息处理领域。 现有的汉字编码方案都从这样两条基本原则出发,(1)规则简单,(2)重码率低。但这两条原则又很难统一起来,有的编码方案着重强调重码率低,有的编码方案着重强调规则简单,根据这样的区别,可以把现有的编码方案分为两类。一类是用增加编码规则的办法减少重码,这类方案的优点在于重码率低,不需要或很少需要看屏选字,可以盲打输入,其缺点是编码规则比较多,与读汉字的习惯不一致,不容易掌握,破坏了规则简单的原则。另一类编码方案根据读汉字的习惯去编码,需要重新记忆的规则很少,遵守了规则简单的原则,可是这类编码方案的最大缺点是重码率高,需要不断地看屏选字,很难盲打输入,使用很不方便。
本发明的一个任务是提供一种规则简单的汉字编码方案,尽量与读写汉字的习惯保持一致,使汉字解码更加简便。它与第一类方案相比具有第二类方案的全部优点,即规则简单。本发明地另一个任务是要提供一种重码处理方法,弥补重码率高的缺点。这个方法有效地解决了重码汉字的盲打输入问题,使输入重码汉字与输入非重码汉字一样方便。以往的汉字编码方案是用增加规则的办法处理重码,或者在输入代码的同时处理重码,而本发明把汉字编码和重码处理作为两项任务来完成,解决了规则简单和重码率高的矛盾。
本发明所提供的汉字编码方案是根据读写汉字的习惯制定的,把这种代码称为读音码。根据汉字的形体结构,读音码分为两类。
第一类:对于由笔划直接构成的独体字以及部件之间相交的合体字,编码时读一次音,取其汉语拼音的前三个字母作为代码,不足三码则加替补码(;)。例如:
人(REN)
我(WO;)
读汉字时取最常用的读音,编码时把汉语拼音中的ZH用I代替,CH用V代替,SH用U代替,各占一个码位。例如:
中(ION)
长(VAN)
史(UI;)
第二类:对于部件之间相离或相连的合体字,编码时读三次音,(1)读汉字,(2)读汉字的前一部分,(3)读汉字的后一部分,每次读音只取其汉语拼音的第一个字母作为代码。例如:
相(XMM)
音(YLR)
按取大优先的原则读汉字的前一部分和后一部分,如果读到《现代汉语通用字表》中的汉字,则取其汉语拼音的第一个字母作为代码;如果读到《汉字统一部首表(草案)》中除一、丨、丿、丶、之外的部首,取其对应汉字汉语拼音的第一个字母作为代码;如果没有读到这两个表中的汉字或部首,就用替补码(;)代替。例如:
能(NSB)
叫(JK;)
春(V;R)
《现代汉语通用字表》是国家语言文字工作委员会、中华人民共和国新闻出版署1988年联合公布的;《汉字统一部首表(草案)》是中国文字改革委员会、国家出版局1983年联合发布的。
《汉字统一部首表(草案)》中的大部分部首是《现代汉语通用字表》中的汉字,只有以下一些部首不能独立成字,现在给出它们对应的汉字或代码。
匚(框) 凵(山) 囗(框) 宀(盖) 礻(示) 糸(丝)
刂(刀) 卩(耳) 彳(V) 辶(走) 肀(聿)(朝)
冂(框) 阝(耳) 彡(撇) 彐(寻) 钅(金) 隹(I)
亻(人) 厶(S) 犭(犬) 屮(V) 疒(病) 鬲(L)
勹(包) 廴(建) 夂(文) 纟(丝) 衤(衣) 髟(B)
亠(文) 艹(草) 饣(食) 巛(拐) 疋(P) 龠(Y)
冫(点) 廾(弄) 丬(爿) 耂(老) 癶(登)
冖(盖) 尢(尤) 忄(心) 殳(U) 虍(虎)
讠(O) 扌(P) 氵(点) 灬(火) (竹)
单字读音码以小写拼音字母开头,词码以大写拼音字母开头。词码长度为四码,取码规则如下:
(1)双字词取每个单字读音码的前二码;
(2)三字词取前两个单字读音码的第一码,取最后一个单字读音码的前二码;
(3)多字词分别取前三个单字读音码和最后一个单字读音码的第一码。
读音码中的重码用如下方法处理。
在汉字内码中设置一个重码标识位,或者设置一个重码标识字节,利用这个标识区别重码汉字和非重码汉字,从而实现集中处理重码。以二字节内码为例说明。把内码第一字节的高位作为汉字标识位,把第二字节的高位作为重码标识位。当第二字节的高位置1时,表示这个汉字不是重码汉字,或者是不需要再选择的重码汉字;当该位为0时,表示这个汉字是重码汉字,而且这个汉字还没有选定。在具体实施时,预先从每一组重码汉字中选出一个代表字,并制作一张重码表,凭借这张表从代表字查出同一组中的其他重码汉字。在具体的操作中,输入重码汉字时,暂时不选择,把代表字送到相应的位置上,并使这个汉字的内码带上重码标识,即第二个字节的高位为0,表明这个位置上的汉字还没有选定。待输入完一个句子,或一段文字,或整个文件后,再集中到一起选择这些重码汉字。为了这个任务要设计一段程序,从某一位置开始测试汉字内码第二字节的高位,如果该位已经置1,那么继续测试下一个汉字内码第二字节的高位;如果该位是0,根据重码表给出与当前汉字重码的所有汉字,通过人机对话选择,用选定的汉字替换当前位置上的汉字,替换后的汉字内码没有重码标识。对整个句子、整段文字和整个文件中带重码标识的汉字,逐个查找,逐个选择,逐个替换,直到全部重码汉字处理完毕。