在 Oracle Solaris 中进行应用程序国际化和本地化

退出打印视图

更新时间: 2014 年 7 月
 
 

转换代码集

在计算机系统中,字符可以表示为唯一的标量值。这些标量值将作为字节或字节序列进行处理。编码字符集是字符集加上字符与对应唯一标量值之间的映射。这些唯一标量值称为代码集。例如,646(也称 US-ASCII)是符合基本拉丁字母的 ISO/IEC 646:1991 标准的代码集。下表显示了代码集的其他示例:

代码集
字符
表示形式
US-ASCII
A
0x41
ISO 8859-2
Č
0xC8
EUC-KR
全角拉丁字母 A
0xA3 0xC1

Unicode 标准添加了其他层,并将各个字符映射到代码点,此代码点是介于 0 到 1,114,111 之间的一个数字。此数字在各种 Unicode 编码形式中有不同的表现方式,例如 UTF-8UTF-16UTF-32。例如:

代码集
字符
代码点
编码
表示形式
Unicode
FULLWIDTH LATIN CAPITAL LETTER A
65,313 或 0xFF21
UTF-8
0xEF 0xBC 0xA1
UTF-16LE
0x21 0xFF

注 -  代码集也称编码。尽管代码集编码这两个术语之间有区别,但它们仍可互换使用。

代码转换或代码集转换意味着将字节或字节序列表示形式从一种代码集转换为另一种代码集。常用的转换方式是使用 iconv() 函数系列。代码转换和 iconv() 函数领域中使用的一些术语如下所示:

单字节代码集

将字符映射到一组值(范围为 0 到 255 或 0x00 到 0xFF)的代码集。因此,字符以单字节的形式表示。

多字节代码集

将一些或所有字符映射到多个字节的代码集。

非法字符

输入字符集中的无效字符。

移位序列

多字节代码集中字节的特殊序列,不会映射到字符,而是一种更改解码器状态的方式。

不完整字符

未在输入代码集中形成有效字符的字节序列。但是,当输入中提供了其他字节时,如果后续调用了转换函数(例如 iconv() 函数),则此不完整字符可能会形成有效字符。在转换多字节流时,这种情况很常见。

不一致的字符

在输入代码集中有效但在输出代码集中没有一致字符的字符。

不一致的转换

不一致字符的转换。根据实现和转换选项,这些字符在输出中可省略或替换为表示出现不一致转换情况的一个或多个字符。缺省情况下,Oracle Solaris iconv() 函数会把不一致字符替换为问号 ("?")。