简介
如果您已经阅读了我们的第一篇文章,The Localization Process: Globalizing Your Code and Localizing Your Site(英文),就应当了解在创建一个国际 Web 站点时会遇到的问题。我们将继续讨论在第一篇文章中所提及的设计全球 Web 站点问题,以及如何避免一些标准错误等问题。
什么是全球站点?
根据定义,任何在万维网(WWW) 上的站点都是国际化的。然而,我们将全球站点定义为能够按照用户习惯的形式展示信息的站点;这包括语言、格式化的约定、市场特定的数据等。例如,我们曾经看到过一个亚洲站点,它用一双鞋的 GIF 图像代表主页,而不是用一所房屋。对于那里的用户,一双鞋子远比一所房屋更能引起文化上的共鸣。
然而,全球化却不能对固有的文化问题提供解答,如怎样去解决问题。尽管您自身的文化对站点的结构有深刻的影响,但这些问题很难在世界范围内定义并加以解决。我们将在本文中集中讨论一些特定的全球化问题。
字符编码
在设计 Web 站点时,首先需要确定的问题之一就是使用何种字符编码。下面简要讨论字符编码以及字符编码类型的正反两方面的见解。
字符编码的演变
计算机在内存中使用代码表示字符,使文本能够得以存储和复制。这些字符编码(或代码点)用于表示字符在文本的某一地方中的位置,而不表示其形状、大小和颜色等。
早期计算机的内存是以单元构成的;一个单元代表一个字符。不同的计算机中这些单元的大小是不同的。这会导致两个问题:
不同的计算机可以存储不同数量的代码点。
不同的计算机在相同的代码点存储的字符也不同。
这使计算机间信息的交换变得困难,因此,在早期 7 位字节的时代里,计算机产业对一个单元或字节的长度规定了一个事实上的标准。7 位字节可以对 128 个不同的字符进行编码。这种编码方案足以对大写英语字母进行处理,并扩展某些小写字符。它还包括了标点符号、数字以及一些控制码。新的编码方案被称为“美国信息互换标准代码”,或人们更为熟悉的 ASCII。
当计算主要面向英语,并且基于文本的计算相对不重要时, ASCII 编码方式是有效的。然而,随着计算的进步,字节的大小变为 8 位,这样也就可以存储 256 个编码。因而,扩展 ASCII(也称 ANSI)也就诞生了。代码页概念的国际化也是在此时开始的。代码页是一些可替换的 256 个字符的集合,可在世界上的不同地区使用,或用于不同语言。从那时起,代码页和字符集实际上已成为同义词。
计算机能够识别和处理不同语言的文本已成为必需。这对于单一语言和单一机器而言是容易实现的。然而,当必须在计算机间发送信息时,如果这些计算机使用不同的字符集就会产生问题,原因是一台计算机上的代码点可能代表另一台计算机上的不同内容。
若要正确表示并且归档保存由多种语言混合而成的文本时,该问题就变得更为突出了。由于东亚国家使用的是象形文字,另一件麻烦事发生了,东亚象形文字的字符数很大(中文拥有 7,000 到 13,000 个基本字符)。显然这些语言不适合 128 个代码点,不管程序员有多么聪明。所以创造另一种编码方法已成必然。
编码方法最为严重的问题就是由 8 位字节给出的代码空间不足。由于这个问题,人们创造了代码页,并提出了多种不同的编码标准。中国、日本和韩国 (CJK) 字符集需要很大空间,因此人们发明了 16 位的代码。不幸的是,人们至少发明了四种不同的编码。这意味着不同语言文本的转换,譬如中文,只能通过将“外来”编码的字符转换为本地字符的大量的查看 (lookup) 表来完成,这样才能使本地系统显示该信息。
有鉴于此,人们发明了 Unicode,以便提供一个统一的编码标准。Unicode 协会(英文) ,该协会是由很多计算机公司、标准组织和文献行业的相关组织所组成。Unicode 是一种用于世界上大多数字符的字符编码系统。使用 Unicode,每个字符对应一个单一代码点进行编码,这使计算机系统能够准确交换文本。然而,Unicode 没有以下功能:
• 排序序列。
• 字形定义。
• 字符串比较机制。
• 文本格式化控制机制。
• 语言定义。
• 字符转换机制。
上面每个功能对于完全处理文本文档都是必需的,并且,每个功能都具有单独的标准。在很多情形中(对于字符编码),都存在多个需要协调的标准。
Web 上常用的一种代码页是 UTF-8,它是 Unicode 的一个子集。在 UTF-8 中,每个 16 位 Unicode 字符都作为一个由一个、两个或三个 8 位字节组成的序列进行编码,是一个或两个三个 8 位字节取决于字符的值。下表显示了这种 UTF-8 字节序列的格式(表中以 x 显示的“空闲位”按显示的顺序组合,并从最高有效位到最低有效位进行解释)。
序列中字节的二进制格式
每单个字节值表示其 UTF-8 功能的方式如下:
•00 至 7F 十六进制 (0 至 127):序列中第一也是仅有的字节。
• 80 至 BF 十六进制 (128 至 191):多字节序列的延续字节。
• C2 至 DF 十六进制 (194 至 223):两字节序列的第一个字节。
• E0 至 EF 十六进制 (224 至 239):三字节序列的第一个字节。
注:UTF-8 保持了一种简单、单字节和与 ASCII 兼容的编码方法,只要直接显示的字符不超过 127 个。这意味着技术上声明以 UTF-8 编码的 HTML 文档可以保持为一个普通的单字节 ASCII/ISO-8859-1 文件。即便文档包含大于 255 Unicode 字符也可以保持这样,只要所有大于 127 的所有字符由“和号”实体间接引用即可。
Unicode 编码的字符的示例(用十六进制表示)
16 字节的 Unicode UTF-8 序列
0001 01
007F 7F
0080 C2 80
07FF DF BF
800 E0 A0 80
FFFF EF BF BFF
本地编码与 UTF-8 的对比
两种流行的编码方案为本地编码和 Unicode 或 UTF-8 编码。这里,本地编码指的是某一给定语言或一组语言的一些个别标准,如英语的 ANSI。选择使用哪一种编码方案是很重要的。虽然某些应用程序选择 Unicode 非常理想,但另外一些并非理想。选择了错误的字符编码方法可能会一开始就注定项目的失败。
您的选择将最终取决于站点的结构以及您必须支持哪些浏览器。两种编码方案都有优点和不足之处,下面列出了其中的一些。
本地编码 UTF-8
支持一种编码 X
被 3.0 版的浏览器支持 X
支持一种编码 X
对于所有语言都是少量下载 X
对于 1252 种语言都是少量下载 X X
与 Netscape 4.0 配合工作状况良好 X
所有后端结构的通用系统 X
新的 Web 技术可以容易并自动地支持没有转换规格的所有 Windows 语言 X
如果选择了本地编码,您的站点结构必须支持所有计划启动的站点市场。事实上,确保您的站点可在所有代码页环境下运行(双向语言可能除外,这涉及很多其他问题)会是一个好主意,这样如果您以后决定在一个新的市场启动时就不必修补大的缺陷。
注意:双向语言指的是一般都从右向左读的那些语言。然而,阿拉伯数字以及一些非英语文本却是从左向右读,就象在英语中一样;所以,这些语言被称为“双向的”。这些语言包括阿拉伯语、希伯来语和泰语。
元字符集
如果某个 HTML 页面的作者没有在每个 Web 页面的首部指定字符集 (charset) 信息,用户可能需要手动调整浏览器的编码选项才能正确地查看该页面,而且页面中包含的任何表格都可能不会正确地工作(您会在后面看到)。对于那些较早的 Web 浏览器,这种情况尤为确实。下面是一些字符集标记的例子。
繁体中文或 Big5 (GB_2312-80)
<META HTTP-EQUIV="Content-Type" content="text/html; charset=Big5">
UTF-8(通用)
<META HTTP-EQUIV="Content-Type" content="text/html; charset=UTF-8">
特殊字符
HTML 标准考虑到了命名的和编号的实体。这些特殊编码允许用户指定字符。例如,"æ" 和 "æ" 都指同一字符 - æ。这些实体的表格(英文)可在 http://www.w3.org/TR/WD-html40-970708/sgml/entities.html 中找到。然而,我们不推举使用命名实体,因为它们并不是在所有的浏览器、操作系统或字体中都运行一致。
有许多输入扩展字符(一般指任何方言字符,如 é、ñ 或 ö,有时还指亚洲字符)的方式:
• 使用特定语言的键盘设置。举例来说,如果您安装法文操作系统,默认为使用法文键盘,键盘上拥有 "é" 和其他一些字符。您还可以在 Microsoft(R) Windows(R) 的控制面板中切换键盘设置。
• 按下 ALT 键,同时在您键盘的小键盘上键入从 0128 到 0255 之间的 4 位数字。输入 <Alt>+0255 则会显示 "ÿ" 字符。(这只对西欧语言有效。您可以在 http://www.htmlhelp.com/reference/charset 处找到扩展字符表(英文) 。ANSI 数字是您在按下 ALT 的同时在数字小键盘键入的。)
• 在安装 Windows 期间,可以安装称作“字符映射表”工具。Windows 安装程序会把“字符映射表”放入您的附件菜单中。这个工具可以以图形方式显示字符,并允许您从该工具中剪切和粘贴这些字符。
• 输入双字节字符 (DBCS) 的另一种方法就是使用输入法编辑器 (IME),称为 Global IME http://www.microsoft.com/Windows/ie/Features/ime.asp(英文) 。它是一个专为 Internet Explorer 4.0(Internet Explorer 5.0 也可使用)设计的组件。可用与传统的 IME 同样的方式 (ALT+~) 启动 Global IME,但您必须首先用左键单击屏幕右下角的任务栏来激活它。如果它已安装则会显示“EN”,并且 Internet Explorer 将成为活动窗口。不象东亚操作系统上运行的传统 IME,Global IME 只能向 Internet Explorer 中输入字符。Global IME 不可能与 Netscape 一同使用。在美国的 Microsoft Windows 平台上,不可能在 Netscape 中输入 DBCS 字符。没有用于 Netscape 浏览器的与 Global IME 匹配的组件。
如果您必须使用某种实体,数字实体会得到更为广泛的支持,因此,如果您无法保证用户的浏览器版本,一般使用实体号码会较为安全。
设计
创建 HTML 页面不难,但创建美观的 HTML 页面则是个挑战。确保这个美观的页面能够本地化则是一个更大的挑战。总之,您为什么要这样做?好,最近一个时期以来使公司的站点变得如此有影响力的原因在于可以使用这些站点建立广泛的国际客户基础。例如,http://www.microsoft.com/china 。产品信息可用这些产品的所有本地化语言获得。
为使工作可行,最好使用一个模板,这样就不必针对每一种语言重新设计页面。在以下各节中,我们将告诉您创建用于本地化的 Web 页面的模板时应注意的一些事情。
图形
大多数可以本地化的图形,都是由位于某种结构化的背景上的文本组成的。要将文本本地化,只须对文本进行操作。如果您得到的是 .gif 或 .jpeg 文件,则文本与背景在同一层上,因此更改文本也就意味着更改背景。如果背景只是一种单纯的颜色,您可以容易地替换文本。

