JAVA中文化和国际化问题.doc_第1页
JAVA中文化和国际化问题.doc_第2页
JAVA中文化和国际化问题.doc_第3页
JAVA中文化和国际化问题.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中文化和国际化问题权威解析之一:字符编码发展历程作者序 在我开发 Java 程序的几年中,遇到得最多,也是别人向我提问最多的问题,就是各种各样看似稀奇古怪的中文乱码问题了。网上也有许多解释和解决 Java 中文问题的文章,但水平参差不齐,有一些文章甚至是错误的。 此外,我们公司自己的 Java 程序从一开始就采用了错误的方式处理中文问题,虽能解一时之急,却引出了越来越多的深远的问题。每当我听到有的同事还在讨论如何特殊处理双字节的中文 GB 码,就感慨他们思路的狭隘。试问,今天我们可以用特殊的方式处理我们所熟悉的中文编码,可是今后我们怎样才能应付日文版、韩文版、或世界其它国家语言的产品开发呢? 在我看来,与其说这些问题是 “ 中文化问题 ” ,不如说是 “ 国际化问题 ” 。所谓的 “ 汉化 ” 这种说法已经随时代远去了。想想看,这个词带有明显的小农经济的色彩:自家汉化自家用,哪管世界变化多。经过汉化的软件,常常意味着:版本落后、不兼容、不稳定。为什么会这样呢?根本原因是,从软件的设计阶段,就没有考虑国际用户的需要,没有采用国际通用的标准。事后要弥补自然难上加难。 所以让我们把眼光放开,想一想 “ 国际化 ” 。当然国际化的目的还是生产出 “ 汉化 ” 的软件,但我们可以用同样的方法 “ 韩化 ” 、 “ 日化 ” 、 “ 阿拉伯化 ” ,统称为 “ 本地化 ” 这就是 “ 国际化 ” 的目的。国际化和本地化有两个很体面的英文缩写: I18n ( Internationalization )和 L10n ( Localization )。 想要开发出国际化的软件产品,首先要了解国际标准,而不是使用东拼西凑的权宜之计。本文首先从相关国际标准的讨论切入,相信正确地理解和应用这些标准,所有的 “ 中文化问题 ” 或 “ 国际化问题 ” 都会迎刃而解。 字符编码简介 ASCII 码 从学计算机的那天开始,老师就告诉我们在计算机里面,所有的英文字母都对应到一个数字编码,这就是 ASCII 码( American Standard Code for Information Interchange )。 ASCII 码是很久很久以前( 1968 年)制定的。它只使用了一个 8 位字节中的低 7 位,总共是 127 个编码位。这样的方案很快就不够使用了。 单字节编码的发展 在 80 年代早期,一些现在流行的标准(如 ISO 8859 和 Unicode )还未出现。那时为了支持多种地区的语言,各大组织机构或 IT 厂商开始发明它们自己的编码方案,以便弥补 ASCII 编码的不足。一时间,各种互不相容的字符编码方案成百花齐放之势。 为了避免混乱, ISO 组织在 1998 年之后,陆续发表了一系列代号为 8859 的标准,作为 ASCII 编码的标准扩展,终于统一了单字节的西方字符的编码。 ISO 是设在瑞士的国际标准化组织的简称( International Organization for Standardization )。 ISO-8859-1 ( Latin1 - 西欧字符) ISO-8859-1 覆盖了大多数西欧语言,包括:法国、西班牙、葡萄牙、意大利、荷兰、德国、丹麦、瑞典、挪威、芬兰、冰岛、爱尔兰、苏格兰、英格兰等,因而也涉及到了整个美洲大陆、澳大利亚和非洲很多国家的语言。 此外, ISO-8859-1 后来被采纳为 ISO-10646 标准(后面会讲到)的首页,换句话说, Unicode 的最开头 256 个字符编码和 ISO-8859-1 是一一对应的。正是由于这个特殊性,使很多人产生了对 ISO-8859-1 编码的误用。 ISO-8859 标准还包括: ISO-8859-2 ( Latin2 - 中、东欧字符) ISO-8859-3 ( Latin3 - 南欧字符) ISO-8859-4 ( Latin4 - 北欧字符) ISO-8859-5 ( Cyrillic - 斯拉夫语) ISO-8859-6 ( Arabic - 阿拉伯语) ISO-8859-7 ( Greek - 希腊语) ISO-8859-8 ( Hebrew - 希伯来语) ISO-8859-9 ( Latin5 ) ISO-8859-10 ( Latin6 ) ISO-8859-11 ( Thai - 泰国语) ISO-8859-12 (保留) ISO-8859-13 ( Latin7 ) ISO-8859-14 ( Latin8 ) ISO-8859-15 ( Latin9 ) 但是 ISO 8859 系列标准的字符编码,还是互不相容,不可能同时使用的。毕竟它们只是单字节的编码方案。而且,它们和多字节的编码方案如中文编码 GB2312 和 BIG5 也是不相容的。那些欧洲字符(最高位为 1 的字符),在 GB2312 和 BIG5 中被认为是双字节汉字编码的首字节。 多字节编码的发展 单字节编码只有 256 个码位( 28 =256 ),而中文字符何止千千万,单字节编码不可能满足中文编码的需要。于是为了适应东方文字信息处理的需要, ISO 又制定了 ISO 2022 标准( Character code structure and extension techniques ),提供了七位与八位编码字符集的扩充方法的标准。我国根据 ISO 2022 制定了国家标准 GB2311 信息交换用七位编码字符集的扩充方法,并根据该标准制定了国家标准 GB2312-80 编码。其他东方国家和地区也制定了各自的字符编码标准,如日本的 JIS0208 ,韩国的 KSC5601 ,台湾地区的 CNS11643 等。 BIG5 BIG5 是从 CNS11643 的早期版本发展而来的,虽然没有包括 CNS11643 的全部内容,但却是目前台湾、香港地区普遍使用的一种繁体汉字的市场标准,包括 440 个符号,一级汉字 5401 个、二级汉字 7652 个,共计 13060 个汉字。 GB2312-80 全称是信息交换用汉字编码字符集 基本集, 1980 年发布,是中文信息处理的国家标准,在大陆及海外使用简体中文的地区(如新加坡等)是强制使用的唯一中文编码。 双字节编码 A1-A9 :符号区,包含 682 个符号 B0-F7 :汉字区,包含 6763 个汉字 GB2312 码共收录 6763 个简体汉字、 682 个符号,其中汉字部分:一级字 3755 ,以拼音排序,二级字 3008 ,以偏旁排序。该标准的制定和应用为规范、推动中文信息化进程起了很大作用。 GBK 汉字内码扩展规范( GBK )是国家技术监督局 1995 年为中文 Windows 95 所制定的新的汉字内码规范。 双字节编码, GB2312-80 的扩充,在码位上和 GB2312-80 兼容。 范围: 8140 FEFE (剔除 xx7F )共 23940 个码位。 包含 21003 个汉字,包含了 ISO 10646 中的全部中日韩汉字,简、繁体字融于一库。 严格说, GBK 不能算是国家标准,最多算是一个商业标准。而 GB18030 才是真正的国家标准。 GB18030-2000 全称是信息交换用汉字编码字符集,是我国的强制标准,所有不支持 GB18030 标准的软件将不能作为产品出售。 单字节、双字节、四字节编码。 向下与 GB2312 编码兼容。 支持 GB 13000.1-1993 中的全部中、日、韩( CJK )统一汉字字符和全部 CJK 统一汉字扩展 A 的字符。 虽然 GB18030 标准非常强大,但它是一个中国大陆的标准。在编码上,除了和 GB2312 以外,还是不能和世界上其它任何一种字符编码统一。 终极标准 Unicode 和 ISO 10646 前面所讲的一切字符编码方案,都是针对局部地区或少数语言文字的,没有办法同时表达所有的语言文字,或在多种语言平台上交换。这对今天极其频繁的国际信息交流是不相称的。 为了提高计算机的信息处理和交换功能,使得世界各国的文字都能在计算机中处理,从 1984 年起, ISO 组织就开始研究制定一个全新的标准:通用多八位编码字符集( Universal Multiple-Octet Coded Character Set ),简称 UCS 。标准的编号为: ISO 10646 。这一标准为世界各种主要语言的字符 ( 包括简体及繁体的中文字 ) 及附加符号,编制统一的内码。 统一码( Unicode )是 Universal Code 的缩写,是由另一个叫 “Unicode 学术学会 ” ( The Unicode Consortium )的机构制定的字符编码系统。 Unicode 与 ISO 10646 国际编码标准从内容上来说是同步一致的。 Unicode 是 Java 语言和 XML 的基础,所以我们要稍微详细地介绍一下 Unicode 以及 ISO 10646 标准。 注意: 不够耐心的读者可以跳过本章的余下部分。但显然了解本章所描述的 Unicode 及相关编码的技术细节,有利于你更好地理解和应用 Unicode 。 Unicode 和 ISO 10646 的关系 在 1991 年, Unicode 学术学会与 ISO 国际标准化组织

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论