APP下载

中文搜索引擎的汉字编码及其转换

2009-07-15白晓玲

现代情报 2009年3期

白晓玲

〔摘 要〕由于世界上不同地区使用的汉字编码技术不同,要想通过中文搜索引擎来充分挖掘和利用网上的这些中文信息资源,就需要对计算机的信息处理和汉字编码及其转换技术有所了解。本文从汉字内码转换原理、汉字内码类型、中文搜索引擎的内码转换特点分析了汉字编码及其转换的处理方法。

〔关键词〕汉字内码;内码转换;汉字编码;中文搜索引擎

〔中图分类号〕H127 〔文献标识码〕B 〔文章编号〕1008-0821(2009)03-0134-05

随着Internet在全球范围的普及和发展,网上的中文信息资源有了迅速增加,中文搜索引擎的数量也呈同步增长之势。由于世界上不同地区使用的汉字编码技术不同,要想通过中文搜索引擎来充分挖掘和利用网上的这些中文信息资源,就需要对计算机的信息处理和汉字编码及其转换技术有所了解。

1 汉字内码转换原理

汉字编码转换实际操作难度很大,首先是字母和汉字的编码不一样,英文字母基于ASCII编码,而汉字是GB码,在编译器词法分析的阶段就需要码制的转换,这其中的原理和分析是研究编码的高层技术人员才可能实现的,其次是编译器的实现。

字符信息在计算机里必须以一组机器能识别的二进制编码形式存在,现在被国际上普遍接受的是美国国家信息交换标准代码(American Standard Code for Information Interchange),即通常所说的ASCII码。1个ASCII码占有7bit(1个二进制位作为1个bit),ASCII码字符集最多可以包括数字、字母、通用符号和动作控制符在内的128种字符,1个英文字母通常用1个ASCII码来表示。

计算机以8bit为1个字节(byte)。字节是计算机中最基本的寻址单元,1个字节存放1个ASCII码后还多1位,这个多余的最高位通常置为0。如果1个文件中各字节的最高位为0,则被称为标推ASCII码文件,即文本文件。

随着信息技术的发展,为了扩大计算机处理信息的范围和能力,又推出了一种扩展的8位ASCII码。它将原ASCII码的最高位由0置换为1,1个字节可以表示的字符由原来的128种扩大为256种,这种含有扩展ASCII码的文件被称为二进制文件。

汉字作为一种字符,也是以一组彼此有别的二进制编码进入计算机的。由于汉字的数目繁多,仅用1个字节即8位二进制数已无法表示,故采用2个字节即通常所称的双字节)来表示。采用这种方法共可以表示2562=65536个汉字,但在实际处理过程中,汉字编码比西文字母要复杂得多。为了使计算机能够接受汉字,首先要将汉字转换成计算机能够接受的编码,称之为汉字输入码,然后在计算机内部将输入码转换成汉字内码,进行信息加工处理,再将汉字内码转换成汉字字形码在屏幕上显示或打印。在不同的汉字处理系统之间交换信息,还需要汉字交换码。

内码转换就是在不同字符集之间建立一种对应关系。以GBK2,Big5(简繁体都可)为例。如:“让”字,在GBK中编码是C8C3。如果我们将GBK码表中的字符变成Big5码格式,则C8C3位 上的应该是“让”字的Big5码字符“琵”(琵字不是GBK中的琵,而是“让”字的Big5码汉 字在GBK环境中显示结果)。这样我们读出要转换的文字,在GBK(已经转换成Big5格式)码 表中找到它的位置,取出该位置上的字符,将原字符替换即可。

2 汉字内码类型

综上所知,电脑中所有的数据都是以0和1保存的,按不同的数据操作,可以得到不同的结果。对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。而对于中文,常用却有6 000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以2个为1组来表示汉字,即汉字的内码。而剩下的低128位则留给英文字符使用,即英文的内码。

汉字内码是任何一个中文处理系统所必备的,同一种汉字内码可以有多种汉字输入码与之对应,而不同的中文处理系统所选择的汉字内码一般也不同。目前较为流行的汉字内码有GB码、Big5码、CJK码和GBK码等。

2.1 GB码

GB码是“中华人民共和国国家标准信息交换用汉字编码”的简称。

全称是GB2312-80《信息交换用汉字编码字符集基本集》,1980年发布,是中文信息处理的国家标准,在大陆及海外使用简体中文的地区(如新加坡等)是强制使用的惟一中文编码。P-Windows3.2和苹果OS就是以GB2312为基本汉字编码,Windows 95/98则以GBK为基本汉字编码、但兼容支持GB2312。GB码共收录6 763个简体汉字、682个符号,其中汉字部分:一级字3755,以拼音排序,二级字3008,以偏旁排序。其他俄文字母、日文假名、拉丁字母、希腊字母、汉语拼音等图形符号682个。GB2312是一个简体汉字系统的中文内码,常简称为国标码、GB码等。该标准的制定和应用为规范、推动中文信息化进程起了很大作用。

1990年又制定了繁体字的编码标准GB12345-90《信息交换用汉字编码字符集第一辅助集》,目的在于规范必须使用繁体字的各种场合,以及古籍整理等。该标准共收录6 866个汉字(比GB2312多103个字,其它厂商的字库大多不包括这些字),纯繁体的字大概有2 200余个。(2312集与12345集不是相交的。一个是简体,一个是繁体)。其他俄文字母、日文假名、拉丁字母、希腊字母、汉语拼音等图形符号717个。除了新增加的103个汉字和35个图形符号外,其余的图形符号均与GB2312—80中的图形符号相同,汉字则是GB2312—80简体汉字的繁体形式,GBl2345—90又称为GBFT(国标繁体)。

2.2 Big5码

Big5码是流行于中国台湾和香港等地的一个繁体汉字编码方案,通常被称为大五码。它并不是—个法定的编码方案、但却被广泛应用于Internet之中,成为一种事实的行业标准。Big5码共收录各种字符13 461个,包括汉字13 053个,各种图形符号408个,其中常用汉字5 401个,次常用汉字7 552个,均按笔画/部首顺序排列。Big5(JT)是Big5繁体汉字的简体形式。

在IE中,进入Big5码网站(如:台湾网站),如果安装有Big5字符集支持,IE会将Big5网页转换成GBK繁体显示,没有则是乱码。IE以GBK繁体显示时,在网页中输入的汉字应当是GBK繁体,以Big5码显示时(乱码),要输入Big5码字符。

2.3 CJK码

CJK:中日韩统一表意文字(CJK Unified Ideographs),目的是要把分别来自中文、日文、韩文、越文中,本质、意义相同、形状一样或稍异的表意文字(主要为汉字,但也有仿汉字如日本国字、韩国独有汉字、越南的喃字)于ISO10646及Unicode标准内赋予相同编码。

国家标准GB13000.1(《CJK统一汉字编码字符集》)完全等同于国际标准ISOl0646.1—1993(《通用多八位编码字符集(UCS)》),ISO 10646.1。《GB13000.1》中最重要的也经常被采用的是其双字节形式的基本多文种平面。在这65 536个码位的空间中,几乎定义了全球所有国家和地区使用的各种语言文字和符号。其中从0x4E00到0x9FA5的连续区域包含了20 902个来自中国(包括台湾)、日本、韩国的汉字20 902个,这些汉字被称之为CJK(Chinese Japanese Korean)汉字。所以、这一标淮又称为CJK码。CJK是《GB2312-80》、《Big5》等字符集的超集。

2.4 CBK码

CBK码的全称为《汉字内码规范》(Chinese InternaI Code Specification),又常称为《汉字内码扩展规范》,由中华人民共和国全国信息技术标准化委员会于1995年12月1日制订,并将其作为技术规范的指导性文件发布和实施。

CBK编码(俗称大字符集)等同于UCS的新的中文编码扩展国家标准。该编码标准兼容GB2312,共收录汉字21 003个、符号883个,并提供1 894个造字码位,简、繁体字融于一库。Windows95/98简体中文版的字库表层编码采用的就是CBK,通过CBK与UCS之间一一对应的码表与底层字库联系。其第一字节的值在16进制的81~FE之间,第二字节在40~FE,除去xx7F一线。

CBK与GB2312国家标准兼容,并支持ISO10646.1993国际标准,共收录各种字符21 886个,其中包括21 003个汉字的筒、繁体和883个各种图形符号。

2.5 Unicode编码(Universal Multiple Octet Coded Character Set)

国际标准组织于1984年4月成立ISO/IEC JTC1/SC2/WG2工作组,针对各国文字、符号进行统一性编码。1991年美国跨国公司成立Unicode Consortium,并于1991年10月与WG2达成协议,采用同一编码字集。目前Unicode是采用16位编码体系,其字符集内容与ISO10646的BMP(Basic Multilingual Plane)相同。Unicode于1992年6月通过DIS(Draf International Standard),目前版本V2.0于1996公布,内容包含符号6 811个,汉字20 902个,韩文拼音11 172个,造字区6 400个,保留20 249个,共计65 534个。

用户要使用Internet中不同汉字内码的中文信息资源,安装一个能支持多内码转换的中文处理系统是必不可少的。这个中文处理系统至少应能同时支持GB码和Big5码。如再能支持CJK码和CBK码则更为理想。

3 中文搜索引擎的内码转换特点

中文搜索引擎与西文搜索引擎在使用方面的差异与搜索引擎本身所采用的核心技术的关系并不大,两者之间的差异更主要的是由于汉语自身的特点所导致的,以下几个方面在使用中文搜索引擎时尤其要引起注意。

3.1 不同汉字内码系统造成的乱码

用户要使用中文搜索引擎检索Internet的中文信息资源.通常需要在自己的计算机系统上加装支持多内码汉字的中文处理系统,然而麻烦也就因此而产生。有的中文系统只有显示功能而没有输入功能,这时如果仅仅使用以分类目录为主的中文搜索引擎,尚可以应付,但如果要进行全文检索,即通过输入关键词进行检索,由于系统自身没有输入功能就有可能无法进行。中文系统采用的是GB码,日文系统采用的是JIS码。内码是以123456789和26个英文数字所组成。

譬如,中文系统里,内码(0000)对应汉字是(一),而在日文系统里,内码(0000)对应汉字是(十)的话,中文的汉字“一个”,在日文系统就可能变成了“十万”。GB码的汉字,在日文系统下,就变成了乱七八糟的符号和文字,而导致乱码。

乱码形成原因一般是由于文档采用的字符集,系统不支持造成的。繁体中文的文档显示在简体中文系统下,或者相反的情况,就会造成文档显示时乱码。只要内码转换正确,如把原本是繁体的内码,转换为简体内码(或者相反),即可消除乱码,有以下四种解决办法。

3.1.1 网页、文本和文档文件乱码的消除

网页乱码是浏览器(如IE等)对HTML网页解释时形成的。如果在网页的代码中有形如:……的语句,浏览器在显示此页时,就会出现乱码。因为浏览器会将此页语种辨认为“欧洲语系”。解决的办法是将语种“ISO-8859-1”改为GB2312,如果是繁体网页则改为BIG5。另一种解决办法是不修改网页代码,事先为浏览器安装多语言支持包(例如在安装IE时要安装多语言支持包),这样在浏览网页出现乱码时,就可以在浏览器中选择菜单栏下的“查看”/“编码”/“自动选择”/简体中文(GB2312),如为繁体中文则选择“查看”/“编码”/“自动选择”/繁体中文(BIG5),其它语言依此类推选择相应的语系,这样可消除网页乱码现象。

3.1.2 利用多内码显示平台来转换内码

常用多内码显示平台有:“南极星”:可自动识别GB码、BIG5码,用简体或繁体显示,并能做到同屏显示GB码和BIG5码,对日文、韩文亦能正确显示。下载地址:http:∥www.njstar.com.au/njwin/。“四通利方”:支持了包括GB、BIG5、HZ、日韩编码、UNICOD等17种汉字内码,也开始支持预览功能,并且增加了诸如“增删空格”、“插入禁排空格”等小而有用的功能,是网友的好帮手。下载地址:http:∥www.srsnet.com。

3.1.3 使用Word2003/XP转换内码

Word2003/XP支持众多的语言,可以正确显示非Unicode类型的文本文件,单击“工具”菜单下的“语言”/设置语言,你可以把默认语言设置成非中文,例如日语,这样Word就可以正确显示日文了。当然你也可以用它进行简体中文与繁体中文之间的转换工作,如果文件有乱码,你转换一下即可消除。例如要把繁体中文转换为简体中文,方法是:选择要转换内码的文件,在弹出的对话框中,选择“其他编码”中的“繁体中文(BIG5)”一项,打开此文件时就不会出现乱码。

3.1.4 使用Word2003/XP无乱码保存

在Word2003/XP中,当保存时选择“文件”中的“另存为”,先存为“WORD”文档,存盘后打开再存为纯文本等其他格式;或者在菜单栏中选择“工具/语言/中文简繁转换”,内码转换以后再保存。

3.1.5 使用内码转换工具

除此之外,使用内码转换工具也可以消除此类乱码,你只要对BIG5(繁体中文)和GB2312(国标码、简体中文)进行相互转换即可实现。

3.1.6 使用WPS2000转换内码

WPS2000也能转换内码,支持GB2312、BIG5、GBK等3种主要的汉字编码,并可在输出RTF、TXT、HTM格式文件时对内码进行转换。

3.2 中文单词的分隔

搜索引擎查询的前提是将查询条件分解成若干关键词,同时一些关键词表示文档。对英文而言,一个单词就是一个词,英语单词的分隔通常可以用空格来表示,但中文就没有这么简单,有时你根本无法加空格,有时加了空格反而麻烦。主要问题是中文词与词之间没有界定符,需要人为切分。此外汉语中存在大量的歧义现象,对几个字分词可能有好多种结果。因此,可以根据语料库进行总结,获得每个词的出现概率以及词与词的关联信息,再使用正向和逆向最大匹配法进行细切分,排除歧义,提高分词的准确性。简单的分词往往会歪曲查询的真正含义。如对于“东方明珠”一词,一般的中文搜索引擎都将其作为“东方”和“明珠”两个单词来检索,而对于”花木兰”,则将其拆分为“花木”和“兰”。如,查询条件为“中国人”,若不能正确地分词,按“中国”、“人”、“中国人”等3个关键词去搜索,这样搜索结果的质量就可想而知了。因此,可以根据语料库进行总结,获得每个词的出现概率以及词与词的关联信息,就可能有效地排除各种歧义,大幅度提高分词的准确性,从而准确地表述查询请求和文档信息。对于这类词汇。建议用户采用高级检索中的完全匹配方式比较好。

3.3 中文状态下的特殊符号输入

用户在使用高级检索功能进行检索时,常常需要使用—些诸如“AND”,“OR”,“NOT”,“十”,“一”,“丨”之类的特殊操作符号。此时不管用户安装的是什么中文处理系统,使用的是什么中文输入方法,在输入这些特殊操作符号时,请一律将系统切换至西文或在中文半角状态下进行,输入空格时亦是如此。

3.4 不同地区汉语词汇的表达和使用方面的差异

由于历史和政治方面的原团,世界上不同地区的华人在中文词汇的表达和使用方面的差异以及在外语翻译方面的不统一,对中文搜索引擎的检索结果具有直接的影响。用户对此方面应引起重视。一些介绍中国大陆与台湾地区在汉语词汇方面差异的有关资料可见《常见中国大陆与台湾地区语词对照表》。

http:∥www.sivs.chc.edu.tw/library/870428/dl.htm

http:∥www.cis.nctu.edu.tw/~is84007/EPzsoftwares/Books/index.html

此外,简体汉字与繁体汉字的一一对应,一多对应、多一对应等问题在使用时,尤其是在使用关键词检索时特别要注意。

如果用户要用本人的简体中文系统访问对方的繁体中文搜索引擎、虽然用户可以通过相关软件将对方的繁体中文自动转换为简体中文显示出来,但如果用户要输入关键词进行检索,则必须采用繁体中文输入,反之亦然。这里面的情形比较复杂。用户只有在实践中不断摸索、总结和提高。

参考文献

[1]http:∥zhidao.baidu.com/question/5940020.html[EB].

[2]张兴华.搜索引擎的机理、实现技术及发展趋势[J].现代情报,2003,23(12):66-68,70.

[3]武助宇,刘文清.中文搜索引擎发展趋势[J].高校图书馆工作,2003,23(2):11-13.

[4]林进道,周峰,等.GB 13000.1——BIG5汉字内码智能转换系统[J].中国传媒科技,2004,(11):52-54.

[5]李培峰,朱巧明,等.多文种环境下汉字内码识别算法的研究[J].中文信息学报,2004,18(2):73-79.

[6]鞠冬生.VB中实现汉字内码与区位码的转换[J].电脑开发与应用,2001,14(11):30,32.

[7]王秀珍.GBK内码转换的设计与实践[J].长春师范学院学报,2006,25(4):66-67.

[8]张晓培,李祥.从Unicode到GBK的内码转换[J].微计算机应用,2006,27(6):757-759.