首页 公司简介 产品信息 客户方案 技术支持 新闻资讯 电子数据库 免费下载 联系方式 论坛
技术支持
常见问题
为什么要用OCR…
为什么要使用模糊…
相关专题
当前流行的字符编…
UNICODE与…
XML与古籍电子…
OCR相关技术在…
 

 

UNICODE与大规模古籍电子化 
作者:王晓波 

  文字在电脑和网络上能否正确地表达和显现,是古籍电子化的关键。汉字是表意文字,每个汉字必须用一个编码来表示。选择合适的汉字编码,将极大地影响古籍的电子化。现有的中文平台内码多种多样,可称上“万码奔腾”,最名的要数台湾的BIG5,大陆的GB2312、GBK,以及国际标准UNICODE。另外象倚天码(ETEN)、电信码(TELE graph),王安码也有一些用户。另外,要使大规模的电子版书籍在不同的平台上使用,针对不同的平台开发不同版本的软件,工作量之大是不可想象的。实践中逼使我们要开发出同一套软件同一套数据能在不同平台上运行,这就需要采用UNICODE编码及相应的实现技术。本文中将着重研究UNICODE,其他几种重要的编码体系将放在附录中简述。

2.1 UNICODE

  随着国际互联网的迅速发展,要求进行数据交换的需求越来越大,不同的编码体系越来越成为信息交换的障碍,而且多种语言共存的文档不断增多,单靠代码页已很难解决这些问题,于是UNICODE应运而生。
  UNICODE有双重含义,首先UNICODE是对国际标准ISO/IEC 10646编码的一种称谓(ISO/IEC 10646是一个国际标准,亦称大字符集,它是ISO于1993年颁布的一项重要国际标准,其宗旨是全球所有文种统一编码),另外它又是由美国的 HP、Microsoft、IBM、Apple等大企业组成的联盟集团的名称,成立该集团的宗旨就是要推进多文种的统一编码。

  UNICODE同现在流行的代码页最显著不同点在于:UNICODE是两字节的全编码,对于ASCII字符它也使用两字节表示。代码页是通过高字节的取值范围来确定是ASCII字符,还是汉字的高字节。如果发生数据损坏,某处内容破坏,则会引起其后汉字的混乱。UNICODE则一律使用两个字节表示一个字符,最明显的好处是它简化了汉字的处理过程。
  UNICODE使用平面来描述编码空间,每个平面分为256行,256列,相对于两字节编码的高低两个字节。
  UNICODE的第一个平面,称为Basic Multilingual Plane(基本多文种平面),简称BMP,由于BMP仅用两个字节表示,所以倍受青睐。

 

  其中 A_ZONE为拼音文字编码区,拉丁文、阿拉伯文、日文的平假名及片假名等都在此区编码。

  CJK Extension A 和CJK为汉字区域共计27487个汉字

  Y1即彝文,位于O-ZONE保留待将来使用。

  Hangul即韩文。

  EUDC为用户私有区,用户可以根据需要自己定义此区的编码。

  R-ZONE为限制使用区,一些兼容字符、特殊字符均放在此区。

  UNICODE定义BMP中的D800-DFFF为代理区(Surrogate Zone),其中D800-D8FF为高半代理(high surrogate), DC00-DFFF为低半代理(low surrogate)。从两个区域分别取一个编码,组成一个4字节的代理对来表示一个编码字符,此即为UTF-16。利用UTF-16机制,UNICODE扩充了1024*1024个字符,相应于OO-OF平面,并且将02平面分配给了CJK Extension B。Microsoft在Windows 2000已实现了 UTF-16。


2.2 UNICODE对古籍电子化的重要意义 
 2.2.1 UNICODE拥有充足的汉字编码

  从附录GB2312、BIG5、GBK可以看出,即使使用代码页实现方式的极限GBK,也只能表达21886个标准汉字。但是汉字的数目远不止这些,例如:我国正式整理出版的汉字字典——《中华字海》,已含有近8万字,但仍未收全。一些学者认为中国汉字就有10万之多,此外还有日本、韩国、越南等国的汉字。
UNICODE仅在BMP上的标准汉字就有27487个,而且还有EUDC的6400个码位可供用户自己定义。这已比GBK多出10000个汉字,而且囊括了《康熙字典》、《汉语大字典》所有汉字的CJK Extension B,包括4万多汉字,已进入表决阶段。拥有如此多的标准汉字,进行古籍电子化就再无外字困扰。

 2.2.2 UNICODE能同时处理多国文字

  UNICODE是集世界各国文字的统一编码。它包含少数民族文字,以及其它多国文字,对于包含多种少数民族文字古籍数字化非常重要。同时由于这种统一编码的架构,才使正-异、中-日、繁-简、正-讹以及古今字同台相见,实现这种关联的全文检索系统,极大的方便了使用不同文种用户的检索。

 2.2.3 UNICODE使古籍为全球共享

  使用UNICODE技术可以构造跨语境的应用,使数字化的古籍可在中文简体、中文繁体、日文、韩文、英文等视窗平台上运行,为全球关心汉学的学者共享,并且可以构造Internet应用,使古籍数字化的访问更加简便。
综上所述,UNICODE是古籍数字化的唯一之选。

2.3古籍电子化的跨平台展现

  UNICODE标准解决了古籍电子化的码位短缺和不同系统码表不同而造成的信息交换问题,同时UNICODE标准也使各种不同的语言平台之间有了一个共同的编码系统,使得古籍的跨平台展现变得可能,但是,这只解决了信息的存储和交换问题,另一个重要的问题是显示,由于Windows 95早于UNICODE2.0标准发布,因而不可能支持UNICODE的所有特性,并且微软也没有计划在Windows 95中完全支持UNICODE,它只在Windows 98和Windows NT上完全支持UNICODE2.0的字符显示。

  在真正做到跨平台展示,就需要在各种语言的Windows 95,Windows 98, Windows NT上解决UNICODE的存储、输入、显示、检索、信息交换等。

 2.3.1 UNICODE的存储 
  UNICODE的存储相对来说是最简单的,由于UNICODE是16位的完全编码体系,即每16位表示一个UNICODE字符,因而结构相对简单。所以在系统低层,可以把UNICODE字符当作16位WORD来存储,至于UNICODE的显示,字符串比较等操作可由上层软件提供。

 2.3.2 UNICODE的显示

  对于UNICODE应用程序来说,最重要的部分,当属UNICODE的显示问题。(广义上说,打印也是显示的一种,故而不再提出UNICODE的打印。)因为这是终极目标,用户最后的要求就是能看到内容。

  在Windows NT和Windows 98平台上,UNICODE的字符显示是非常简单的事情,下面的伪代码可以表示出方法:
  Font = Create Font (FontProperty);
  // 创建UNICODE字体,字体中要包含所有要显示的UNICODE字符
  OldFont = Select Object (Font);
  // 告诉系统使用该字体显示字符
  TextOutW (unicode_String);
  // 显示UNICODE字符串
  Select Object (OldFont);
  // 恢复原始环境

  在Windows 95上,问题就复杂多了,同样使用上图所示代码,则那些系统不支持的地方就只是显示黑方块。那么如何解决这个问题呢?可以从底层做起,这是最彻底的解决办法。从根本上说字符是一个索引,在显示字符的时候,系统使用字符,从一个数据库中提取出了字符的外形数据,然后使用点、线来显示该字,这个数据库就是通常的字体。应用程序完全可以依照这个模式来显示UNICODE字符。

系统均有相应的Win32 API支持这几个步骤。
GetGlyphOutline(…) 可用于提取UNICODE字体中的字符外形。
DrawBezier(…) 可用于描绘TrueType字体中的Bezier曲线,
BeginPath(…) , EndPath (…) , CreateRegion (…),
FillRegion, 可用于创建一个区域,并填充该区域。
有了这些函数的支持,显示UNICODE数据就只须按照上面的流程图即可。

  以上所述的仅是基本的UNICODE字符显示,要想构造一个UNICODE应用程序,必须构造更高层的组件,如编辑框,列表框、标签、树控件和对话框等,这些控件的构造原理就是截获WM_PAINT消息,然后使用上面的技术显示控件的内容。


 2.3.3 UNICODE的输入


  由于电子出版物不是简单的展示,而是一个人机交互系统,它应该允许进行用效的检索,也允许加入个人的笔记等。除了UNICODE的显示以外,必须解决的问题是UNICODE的输入问题。
  在亚洲国家的Windows平台上,一般提供输入法,英文的Windows平台上连输入法也没有。而且输入法能输入的汉字,也仅限于UNICODE的CJK区,所以应用系统有必要提供一种通过“笔画+部首”进行选择的方式输入所有的UNICODE汉字,利用上一节的UNICODE显示技术,开发出一组支持UNICODE输入的控件,下面以编辑框为例,说明解决方法:

  UNICODE 编辑框的所有消息都被截获,它们分为四种类型:
  输入法消息,例如输入一个汉字。
  辅助输入,从应用程序提供的辅助输入中选择一个字符串。
  剪贴板消息,如剪切,拷贝,粘贴等。
  控制消息,如方向键,DEL键等。

  对于前两类消息,编辑框只需提供在插入符指示位置加入一个UNICODE字符串的函数即可,对于第三类消息,还要提供剪切及拷贝的相应函数,对于第四类,还需提供删除及移动插入符的位置等函数。


 2.3.4 UNICODE语料的全文检索


  如果只是把书的字符转化为编码字符,然后显示出来,那么书还是一本“死书”,只是把内容转化了一个存储媒体,把庞大的书籍存储于现代的小型设备,虽然降低了使用的费用,没有充分使用电子化的威力。电子化后最大的好处应该是在内容间建立灵活的联结,才能使用户充分体验到电子化带来的方便,这其中最主要的技术是“全文检索技术”。全文检索技术是一种索引技术,它基于一种倒排表的结构。

 
    对于资料中出现的任意一个字符(除了一种称为噪音词的无信息的词之外),都将其加入倒排表中,记录出现的文章和在文章的偏移。  有了倒排表,全文检索就不是在全部语料中进行检索,而是在倒排表的相关位置进行计算,因而大大提高了检索效率,在大的语料中,全文检索可以将检索速度提高4-6个数量级。

  基于UNICODE的全文检索系统还可以提供其它的附加组件,增强其功能,一个对中文最有意义的工作是汉字关联,如简繁关联,正异关联,即输入的字同资料中的字可以不完全相同,而是存在某种联系。如输入“叶公好龙”,可以检索出“叶公好龍”,这对于大陆的用户更有意义,因为我们使用的是简体字,而古书中却全是繁体字。
  
版权所有©北京创新力博数码科技有限公司
Copyright©Beijing Ilibo Digital Technology Co.Ltd.
 
关于我们 友情链接 版权声明 相关法律 京ICP备05048155