全球化(2):Unicode
Unicode,统一码,是一种在计算机上使用的字符编码。它为每种语言的每个字符设定了统一并唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。于1990年开始研发。94年正常公布。
Unicode 实际上包含当今在计算机中广泛使用的所有字符。它能够编制 110 多万个码位。该标准包括针对 8 位、16 位和 32 位编码形式所做的规定。16 位编码为其默认编码,超过百万的码位跨 17 个“平面”分布,每个平面可编制 65,000 多个字符。平面 0(或通常称为“基本多文种平面”(BMP))中的字符用于表示世界上的大部分书面文字、出版中使用的字符、数学和技术符号、几何形状、基本标志(包括所有 100 级 Zapf Dingbat)以及标点符号。除支持流行语言字符以及刚才所提的符号和形状外,Unicode 还包括其他字符,如普及性低一些的中文、日语和韩语 (CJK) 象形文字、阿拉伯语表示形式以及音乐符号。上述许多字符都使用名为“代理项对”的扩展机制在原始平面之外进行映射。Unicode 3.2 已为 95,000 多个码位分配了字符;其余码位留待将来使用。Unicode 还为应用程序提供了有 131,000 多个位置的专用区,供用户定义字符使用(通常是代表人名或地名的稀有象形文字)。
Unicode编码包括:
- UTF-8:为满足面向字节和基于 ASCII 系统的要求,Unicode 标准定义了 UTF-8。采用 UTF-8 的每个字符最多表示为 4 个字节,其中,第一个字节指示多字节序列中的字节数,从而允许更好地解析字符串。UTF-8 通常用在使用 Internet 协议的传输中以及 Web 内容中。
- UTF-16:这是 Unicode 标准的 16 位编码形式,在该形式中,除了由代理项对编码的字符(由一个 16 位值对组成)外,其他字符均被分配一个唯一的 16 位值。Unicode 16 位编码形式与国际标准化组织/国际电工委员会 (ISO/IEC) UTF-16 传输格式相同。在 UTF-16 中,映射值不高于 65,535 的所有字符被编码为一个 16 位值;映射值高于 65,535 的字符被编码为 16 位值对。(有关代理项对的详细信息,请参阅本章后面的“代理项对”。)UTF-16 little-endian 是 Microsoft(以及 Windows 操作系统中)的编码标准。
- UTF-32:每个字符均被表示为一个 32 位的整数。
UTF-8是目前比较常用的编码方式,大部分情况UTF-8已经是够用的。由于 UTF-8 常用在 Web 内容中,因此它有助于理解如何将 Unicode 码位映射到此编码中,省去了使用 MBCS 字符的麻烦。表 1 显示了 Unicode 码位和 UTF-8 编码字符之间的关系。UTF-8 编码字符中字节链的起始字节表明使用了多少个字节编码此字符。所有后续字节均以 "10" 开头,连续的 x 指示给定范围内编码的二进制表示。
Unicode码位和UTF-8编码字符之间的关系: