通过 Unicode 5.0 将您的应用程序应用到全球
Julie D. Allen and Michael S. Kaplan and Cathy Wissink
本文讨论:
- 操作系统提供 Unicode 支持的重要性
- Unicode 5.0 的新功能
- Windows Vista 对 Unicode 5.0 的支持
- Unicode 安全注意事项
|
本文使用了以下技术: Unicode 5.0、Windows Vista
|
目录
大多数主要的软件供应商可以提供很多本地化或翻译后的产品,以及能够处理非拉丁语书写系统的产品。但是,这还远远不够。软件国际化的最终目标是让尽可能多的人能够不限于语言、书写系统和地域而相互交流。简单说就是,人们希望用自己的术语和语言与他人进行交流。
作为 Unicode 联合会的成员,Microsoft 和其他公司在推动整个行业朝着支持全面的语言和区域这一目标迈进。本文将讨论 Microsoft 在制定此特定标准中所起的作用,更重要的是,介绍 Unicode 5.0 的新功能以及这些功能在 Windows Vista(TM) 中的实现方法。
Unicode 为何重要
Microsoft 一直积极参与 Unicode 联合会的工作,这主要有以下几个原因。首先,独立于书写系统、地域和平台的数据一致性、稳定性和互操作性是全球性软件开发中的几个主要原则。软件行业需要国际化标准,特别是使软件可以在任何平台上稳定运行的编码的国际化标准。这些标准还必须能够表示它们所支持的主要的语言和文化相关实体。Unicode 联合会所开发的标准融入了以下这些主要的语言和文化相关实体的标准和规定:行业、政府机构、语言权威机构和相关标准组织。有了可存储、传输和处理全球各种语言数据的单一全球性系统,就能够简化并显著加速国际性软件的开发和部署。
采用支持 Unicode 的单源代码库使开发时间得以缩短,Unicode 为 Microsoft 带来的好处是显而易见的。就 Windows® 2000 来说,在发布英文产品后需要花费几个月的时间来准备其本地化版本。而对于 Windows XP,这一周期已缩短为几周时间。
Unicode 联合会还在确保可以通过技术来体现世界各地的语言和文化方面起到极其重要的作用,这大多是通过他们与 Script Encoding Initiative(脚本编码行动)计划的合作来完成的(请参见 。Microsoft 和其他软件供应商通过其各种投入市场的新程序来支持此行动计划。Microsoft 的贡献成果包括语言接口包(LIP,Language Interface Packs)和语言支持工具包(ELK,Enabling Language Kits)程序,以及诸如 和
Microsoft Keyboard Layout Creator 之类的开发工具。要简要了解在支持 Unicode 方面的举措,请参见侧栏“ELK 和 LIP”内容以及图 1 和图 2。
图 1 因纽特语字符 (单击该图像获得较大视图)
图 2 马拉雅拉姆语字符 (单击该图像获得较大视图)
Unicode 5.0 的新功能
与早期的主要版本一样,Unicode 标准的 5.0 版本以书籍的方式发行(Addison-Wesley,2006),并随附相关的数据文件。该手册已进行了大量更新,使页面中的文本表述更加清晰,表格和图示更加透彻明了,增加了许多新的文本内容、表格和图示,等等。手册中首次加入了 Unicode 标准附录,附录中包含诸如双向算法、标识符、换行属性和文本边界等主题信息。附录经仔细编辑和重新撰写,以便为开发人员和实施人员提供更好的指导。
在 5.0 版的手册中对一致性条款和定义重新进行了编号,废弃了 4.0 版中使用的诸如 C12b 和 D30e 这类易混淆的编号。(附录 D 中有一个简易表,显示了早期版本中使用的编号。)
Unicode 5.0 中有关显示印度语文字的指导说明更加清楚透彻。对于 CJK(中文、日语和朝鲜语)字符,该手册提供了 IICore 部首笔画索引,集中列出了一个字符集,其中包含对东亚市场区域最为重要的约 10,000 个 CJK 字符。有了这个新索引表,可以更加方便地在标准中查找重要字符,要查找那些不常使用的字符,可以在线访问完整的 CJK 部首笔画索引。对字符属性进行了扩展和改进。
大幅度增加了有关安全注意事项和可靠性方面的信息以及对实施人员非常重要的主题信息。5.0 版与其他重要标准(包括 Unicode 排序算法、公共区域设置数据库和国际标准 ISO/IEC 10646)的协调更新进行了同步。(请参见侧栏“网络钓鱼诈骗和 Unicode 安全”。)网络钓鱼诈骗和 Unicode 安全
尽管与国际域名相关的 RFC 中极力指出与视觉欺骗 (visual spoofing) 相关的各种潜在问题,Unicode 中用于域名的每个字符都可能引发这类视觉欺骗,但是早期的采用者并未注意到这些警告。软件行业应重视 Unicode 字符的视觉欺骗行为,尽管之前的各种 IETF 文档中早已将其列为潜在的安全漏洞。
在下列情况下会发生此类欺骗,例如,银行网站的名称中有字母 l,欺骗者将其替换为数字 1。这两个字符看起来没什么区别,未加防范的用户绝对不会知道是在向罪犯网站中键入他的银行用户名和密码。而且,当 URL 中允许使用的字符涵盖多种语言/书写系统,且其字符与其他语言中的字符看似相同但实际上有差异时,通过 URL 进行欺骗的机会就会大大增加。
Microsoft 的 Michel Suignard 编写的 36 号 Unicode 技术报告“Unicode 安全注意事项”() 以及 39 号 Unicode 技术标准“Unicode 安全机制”() 都解释了支持 Unicode 的应用程序或平台如何避免这些问题。
5.0 版添加了用于表示西里尔语、希腊语、希伯来语、卡纳达语、拉丁语、数学符号、音标扩充内容和诸多符号的新字符。还添加了几种少数民族文字和过去使用的文字,例如提非纳文和腓尼基文。摩洛哥有超过 2000 万人在使用提非纳文字,其他讲各种通常称为柏柏尔语和塔马塞特语的语言的地区也使用提非纳文字。(巧合的是,“提非纳文”这个词的意思就是“腓尼基”字母。)腓尼基文曾在古地中海地区流传使用,阿拉伯语、希腊语、希伯来语和其他现今使用的一些文字都源自于腓尼基文。《Unicode 标准 - 5.0 版》手册是一本资料宝库,其中包含有趣的文字细节信息和有关 Unicode 实现的实用信息。它是一本不可或缺的参考资料。图 3 和图 4 显示了其他几个字符集。
图 3 高棉语字符 (单击该图像获得较大视图)
图 4 老挝语字符 (单击该图像获得较大视图)
为什么进行改进?
在以前的 Windows 版本中,Microsoft 产品都落后于 Unicode 几个版本;例如,所发布的 Windows XP 中包含多个 Unicode 版本(从 Unicode 1.1 到 3.1)的数据,因此不管哪个功能使用数据(无论是排序规则、字符属性、换行、双向算法还是 UTF-8 转换),都可以提供必要的 Unicode 版本。这个使用混合版本的方法,虽然有利于缩短开发周期,但也导致了各种问题,包括:
- 没有合适的算法来支持操作(例如,UTF-8 转换)
- 语言覆盖范围有限,某些不支持的语言后来却有了业务上的支持需要
- 缺乏良好的语言覆盖的问题会在后续版本中凸现出来
Microsoft 从 Windows XP Service Pack 2 (SP2) 开始,装入了 ELK 以支持 LIP,此类问题变得越来越明显。就诸如蒙古语和彝语等语言来说,不存在对 Unicode 属性、大小写和排序规则的内核支持,因此有几种语言必须从可用的 ELK 和 LIP 列表中移除而不予考虑。而且,Microsoft 知道试图将支持的 Unicode 范围限制在那些被认为是公司战略业务目标的强硬方法通常被证明是无效的,因为昨天还处于弱势的业务对象在明天就可能变得具有战略意义。
此外,将 Windows 和 Microsoft .NET Framework 全面更新至 Unicode 标准的最新版本,有助于添补在 Microsoft 产品的预期国际支持能力和标准本身同语言相关行业的关注需求之间的一些空白。
客户对于 Windows Vista 在 Unicode 5.0 支持方面的需求涵盖了 ISV 无法通过自我扩展来实现的核心服务,例如大小写、属性、字符类型值、默认排序规则权重和规范化支持。(我们并不想对 Unicode 5.0 中的每一个字符都提供字体和显示支持,因为那将是一个非常耗时的艰巨任务,更何况 Unicode 和 Windows 的目标是不一样的。Windows 的目标是要支持各种语言并应使上述内核操作支持这些语言,而将其他如版式和键盘支持这类可扩展的细节内容留给字体创建人和 Microsoft Keyboard Layout Creator 这样的工具来完成。)
Windows 和 .NET Framework 中对于 Unicode 版本的支持最低 1.1 版,最高 3.1 版,因此描述 Unicode 5.0 中针对 Microsoft 进行了哪些更新是非常复杂的。就对标准的更新而言,对新的语言和文字的支持可能是最容易理解的部分。但是,新版标准中还有很多客户在 Unicode 支持方面所需要的必备功能。特别是对于 Windows,已对以下与 Unicode 相关的数据进行了更新,并将这些添加的字符包括在内:
- Unicode 中增强的安全功能。
- 规范化和国际域名的更新。
- 对于简单大小写和其他常规操作的最新版本支持。
- 对于添加到 Windows XP 的“扩充 B”的除简单代码点排序之外的排序支持,对于日语/JIS X 213 和香港特别行政区语言/HKSCS 而言,由于增加了一些新字符,这种支持是必需的。此特定支持项并不是 Unicode 的功能,只是 Microsoft 在排序方面开发的功能。它现在遵循 Unicode 排序规则算法示例并将最新版本 Unicode 中的字符添加至其默认表中。
- Unicode 中对数学的支持。
- 应实现人员近年所提出的要求而提供的对南亚和东南亚文字的增强支持模型。
- 为标准的一致性模型进行了大量工作,由于对由标准提供的数据和属性进行了更好的验证,使 Unicode 作为一个整体更加稳定和一致。
语言文化支持的扩展性和一致的 Unicode 实现是客户对 Windows Vista 的重要需求,因此开发国际化标准战略和实现计划来提供跨平台的 Unicode 最新版本的集成至关重要。
Microsoft 是最早采用 Unicode 5.0 的软件供应商之一,而行业的其他成员也已开始使用此版本或计划在不久的将来进行升级。采用此标准的最新版本将使包括开发人员、ISV 和最终用户在内的很多人受益。新 Unicode 功能对 Microsoft 产品的所有好处会同样显著地体现在本行业的其他软件供应商的产品中。一些明显的技术好处就是,会出现更多使用可兼容 UTF-8 转换的软件以及更多增加了反网络钓鱼诈骗功能的浏览器。ELK 和 LIP
Enabling Language Kits (ELK) 和 Language Interface Packs (LIP) 是针对 Windows 启用新语言所花费的时间长度问题而开发的。
ELK 允许在需要支持区域设置的所有组件的每个区域设置上进行安装,安装内容包括新区域设置信息、新键盘、新排序、新字体和新的成形引擎。而且无需等待主系统发布即可完成这些工作。
LIP 有完全不同的目标。它们用于表示本地化框架,有助于减少将 Windows 本地化为其他语言所需的费用和时间。每个 LIP 都是一个对最常见的字符串进行翻译的轻量本地化包,它贯彻了 80/20 规则,即 80% 的时间里显示的字符串只占总量的 20%,对这些字符串进行本地化。
总结
对于 Microsoft 而言,升级到 Unicode 5.0 的业务案例是明确而有说服力的。其他对支持 Unicode 工作感兴趣的组织机构应考虑加入 Unicode 联合会并积极参与重要项目所带来的许多好处。升级到 Unicode 5.0 为各种语言提供了更全面的字符集,但更重要的是,这有助于为世界各地(包括从未尝试过 ASCII 之外的标准)的人们提供安全性更好、功能更完善的 Internet。
Julie D. Allen 是 Unicode 联合会的高级编辑和项目经理。她从 2.1 版本开始就一直参与 Unicode 标准的开发工作。她拥有华盛顿大学日尔曼语言学博士学位,而之前的英语文学学位则磨练了她的写作技巧。
Michael S. Kaplan 是 Microsoft 的技术指导,主要研究排序规则、键盘和区域设置。他是 Microsoft Layer for Unicode on Windows 9x 和 Microsoft Keyboard Layout Creator 的主要开发人员。还是《Internationalization with Visual Basic》(Sams Publishing,2000)一书的作者。其博客 blogs.msdn.com/michkap 会发布一些有关国际化的新文章。
Cathy Wissink 是 Microsoft 的主管项目经理,在“全球平台技术服务”部门工作。Cathy 于 1991 年成为 Windows NT 3.1 组的见习语言专家。在参与多个 Windows 项目之后,她于 2000 年加入 Microsoft。她拥有华盛顿大学日尔曼语言学专业硕士学位,并继续攻读博士学位 (PhC, Candidate of Philosophy Certificate),而且获得西雅图大学成人教育和培训专业的教育学硕士学位。