中日韩大字符集文字编码的比较研究

http://www.yyxx.sdu.edu.cn/content/guojihuiyi/guojhy-yinbs.htm

中日韩大字符集文字编码的比较研究
尹宝生 潘峰 徐立军 年新 汤蓉
沈阳航空工业学院人机智能研究中心 沈阳黄河北大街 52 202 信箱 110034
E-mail:software@ge-soft.com
一、引
随着Internet的飞速发展,信息的交流与传递不再受地域和国界的限制,人们在网上接触到的是全球化的信息,众多的信息资源共享使得全人类的智慧得以充分的融合。作为信息的主要载体之一的文字,同图像、声音相比,具有占用空间少、信息运载量大的优点。但无论是进行网络信息浏览、检索还是机器翻译,均有多种文字输入、显示或转换的要求。然而,由于各种语言的编码不同和各国操作系统、应用软件的本地化使得无法显示或同时显示一些不同语种的文字。语言的编码冲突在某种程度上限制了人们的信息交流。因此,解决各国语言编码之间的冲突也显得日益重要。
由于Internet上语言编码分布各异,尤其是大字符集文字的编码分布更是错综复杂,中、日、韩编码之间的冲突就一直是语言文字处理的一大障碍。
二、问题的产生与分析
文化的差异导致了不同的语言文字的出现。对于西方文字,由于字符集较小,所以一般采用单字节编码(每个文字的编码长度为8位),而东方一些国家语言中文字数量较多,达数千个,通常称为大字符集文字,这些文字只有通过一个以上的字节才能实现其在计算机中的完全表示。
由于各国在对本国文字进行编码时,并未考虑到与其它各国编码的兼容性(同时处理的需要),所以产生了编码冲突现象。主要表现在以下几个方面:
(一)各国编码多样化
中、日、韩这三种语言是最具有代表性的东方大字符集语言,各有数种编码表示。
中文常见编码:
              GB2312-80     中文简体国标码(汉字数:6763)
              UNICODE Windows NT,UNIX 等系统采用的编码(包括繁简体)
              BIG5           中文繁体编码(台湾,汉字数:13053)
              GBK              扩展中文GB编码
              CJK               中日韩大字符集编码
(其中GB2312-80编码为现今常见编码)
日文常见编码:
              S-JIS           日文系统常采用的编码
              JIS           
              EUCODE     
              (其中S-JIS 编码为现今常见编码)
韩文常见编码:
       Wansung Code(KS C5601-1987)
       Unified Hangul Code(在Wansung Code上扩展的)
Johab Code(KS C 5601-1992)
(其中Unified Hangul Code 编码为现今常用编码)
(二)外部冲突与内部冲突
外部冲突指的是不同种类语言之间的编码冲突。由于这三种大字符集语言编码,都是以两个字节为基本单位进行编码的。因此地址空间范围应该是在第一个字节是0x00到0xff之间和第二个字节是0x00到0xff之间的空间范围内。下面以这三种语言的常见编码中文GB2312-80,日文S-JIS,韩文Unified Hangul Code为例画出的编码分布示意图。(此处未考虑日文半角文字编码)
 
 
 
 

中日韩
编码重叠区
韩文
编码区
日文
编码区
未用
两种编码
重叠区                          专用
 

 
 
 
 
 
 
 

第 一 字 节
 

 

 
 
 
 单字节编码区
        0x00                               0x80  0xA1    0xE0  0xFF                      

韩日重叠区
第二字节
 

 
 

 
 
 
     0x41      

 
 
 
中韩重叠区
 


 

 
 
 
     0x80                                                            

 
 

中韩日重叠区
 
 
     0xA1

 
 
                                                         
   0xFF

图一:中文GB2312-80,日文SJIS,韩文Unified Hangul Code为例画出的编码分布示意图
 

 

可以看出,以上三种编码是在第一个字节是0x81到0xff之间和第二个字节是0x41到0xff之间的空间范围内存在着冲突。
与外部冲突同样道理,由于每一种语言的文字也存在着不同种类的编码,相对于语言之间的外部冲突,这些一种语言的不同编码之间存在着内部冲突问题。
(三)部分冲突和全部冲突
通过上图不难看出,中、韩编码有一块重叠区,日、韩编码之间有多处形成重叠区,还有一块由三种语言共同形成的重叠区,中文区完全与其它语言重叠。即中、韩编码之间存在着全部冲突,中、日之间和日、韩之间存在着部分冲突。这样就在计算机对文字处理的时候面临着一个难题:当有中、日、韩三种字符串资源时,如何能在一台计算机上分辨出其所属的编码并将它们正确的显示出来。
三、现有的解决方案
(一)采用宽字符 (Wide Character) 或多字节 (Multibyte) 编码方案
宽字符和多字节都是用多个字节来表示一个字符的方法,区别是宽字符中每个字符占有同样多数目的字节,而多字节中每个逻辑字符可以有不等长的字节编码。该类编码可以解决各国文字间的编码冲突问题,但它不能解决各国文字的兼容处理问题。CJK是最新制订的针对中、日、韩三种语言的一字一码的大字符集编码方案,但是这种编码方案只能保证对中国大陆文字符号编码的兼容性,完全打乱了原日、韩文字的编码,因此对日本、韩国的本地化软件这种不兼容就是一个很难解决的问题。还有其他一些宽字符集编码方案(如:Unicode等编码方案),Unicode是一个世界范围的字符编码标准,Windows在系统级字符和字符串处理中使用它,可以说Unicode在一定程度上改进了多国语言文字的处理能力。但是这种编码方案打乱了原来各国文字的编码,这种不兼容就是一个很难解决的问题,因为如果按照这个标准,那么原则上几乎所有与其不兼容的应用软件都应重写以适应固定大字符集编码方案的要求。这种重新编码而产生的不兼容性影响了其方案的推广应用。
(二)利用设置字体携带原编码信息的方案
该方法可以实现在同一编辑器(具有字体设置功能)内正常处理多种编码的文字,且每种文字都采用与该国语言标准编码兼容的编码方案。但在保证各国文字正常显示之前必须将各国文字的字体设置成与该国文字对应的字体。它的主要缺点是不能在不具有字体设置功能的编辑器内(纯文本文件编辑器内)处理多文种文字以及无法同时在编辑器内正常显示两种或两种以上的编码文字。
(三)采用多文种处理软件
针对编码的冲突问题,各国均有适合本国特点需要的多文种处理软件,针对几种语言和编码进行显示和处理。该类多文种平台是通过用户对系统当前主语言编码页的人工切换来实现同一Windows下处理不同编码信息的,但这一类所谓的多文种处理软件,采用的编码方案是固定的,也存在着难以克服的不兼容问题,而且也无法对屏幕上的语言文字信息动态地进行识别,需要手动设置。这种处理方式使得某一时刻只能保证一种编码方式正常使用,而其他种类编码的文字信息显示出来的是乱码。
综上所述,一个固定的多文种编码方案存在着不可忽略的不兼容问题,无法正确识别出不同种类编码的文字,所以提出并采用基于智能识别技术的面向目标的动态文字编码方案,就是打破人们解决问题的常规思路,将平面编码空间扩展至立体编码空间去解决编码分配和编码冲突问题。这样,对用户来说不会造成编码混乱的局面。
四、基于智能识别技术的动态编码方案
(一)智能识别技术(全称为:各国文字编码的智能识别技术)
为了实现在同一屏幕下能够正确地显示不同编码的语言文字信息,首先必须得到该语言文字的编码信息,也就是确定该文字信息的编码类别,只有这样才有可能实现对其的正确显示。而一段语言文字一般不会提供有关编码信息,(如果是以纯文本方式保存的文件,则绝对不会有编码信息),如果采用Windows自带的记事本这种纯文本显示软件显示,它将按照系统缺省的编码方式来进行显示。那么当这种文字的编码与系统的编码方式不一样时,它就会被“翻译”成了一种新语言,也就是出现乱码。
由于每种语言的编码范围基本上都不相同,因此编码间可能出现非重叠部分,我们可以利用这种非重叠部分,通过对该应用程序字符串资源的识别,来确定该程序的国别和所用语言编码信息。
当然,这种识别过程对用户来说是一种透明式的操作,即在应用程序启动时,系统就自动取得其字符串资源并完成对其的语言编码识别和识别结果的登记。
下图为智能识别模块的工作流程示意图:

Windows
 

 
 

应用程序创建/ 关闭消息
CBT Hook Function
取得当前创建的应用程序的窗口句柄
获取该应用程序的字符串资源
存在字符串资源?
Y
N
编码分布识别
已识别出?
N
Y
字符串语义有效性识别
已识别出?
识别结束
N
人工设置
Y
图二:智能识别模块的工作流程示意图
不作处理的消息
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

(二)动态编码技术
一个固定的多文种编码方案存在严重的不兼容问题,不可能使各类编码同时显示。本系统的基于智能识别技术的面向目标的动态文字编码方案,就是将平面编码空间扩展至立体编码空间以解决编码分配和编码冲突问题。
在同一系统上采用多套编码(对于磁8盘上的数据可保证仅用一套编码),而这些编码的选择使用在系统内部控制,根据不同的进程采用保证与该进程兼容的编码方案。即先对文字编码进行智能识别,根据识别出的编码种类选择相应的编码解释方案来进行处理。这样,即使在一句话中有两种编码,也可以保证将它们各自正常地显示出来,对用户来说不会造成编码混乱的局面,而且还可在同一系统下同时运行不同文种的应用程序。另外由于每套编码又都是兼容某一种文字的多文种编码,所以在不同文种的应用程序中仍可进行多文种处理。下图为动态多文种编码示意图:(以中文GB码和日文Shift-JIS编码为例)

英文单字节编码专用区

任务三
 

 
 
 
 
 

                                              中文编码区
 
 

任务二
 


                                                                     
 
                                                       日文编码区                 

任务一
 


      
 

智能识别
模块
 

 
 

                                           
 
                                                         重叠区
 
图三:多文种动态编码工作原理图
五、结束语
采用了基于智能识别技术的动态编码方案,使得对于不同编码种类的语言文字不必由用户预先设定主编码,即可进行多文种混合编辑,做到了在同一屏幕下正确地显示不同编码种类的语言文字,切实有效的解决了中、日、韩文字编码在中文平台上同时处理、相互转换的难题,在多文种文字处理、多文种信息交流等方面发挥了巨大的作用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值