在计算机系统中,字符可以表示为唯一的标量值。这些标量值将作为字节或字节序列进行处理。编码字符集是字符集加上字符与对应唯一标量值之间的映射。这些唯一标量值称为代码集。例如,646(也称 US-ASCII)是符合基本拉丁字母的 ISO/IEC 646:1991 标准的代码集。下表显示了代码集的其他示例:
|
Unicode 标准添加了其他层,并将各个字符映射到代码点,此代码点是介于 0 到 1,114,111 之间的一个数字。此数字在各种 Unicode 编码形式中有不同的表现方式,例如 UTF-8、UTF-16 或 UTF-32。例如:
|
代码转换或代码集转换意味着将字节或字节序列表示形式从一种代码集转换为另一种代码集。常用的转换方式是使用 iconv() 函数系列。代码转换和 iconv() 函数领域中使用的一些术语如下所示:
将字符映射到一组值(范围为 0 到 255 或 0x00 到 0xFF)的代码集。因此,字符以单字节的形式表示。
将一些或所有字符映射到多个字节的代码集。
输入字符集中的无效字符。
多字节代码集中字节的特殊序列,不会映射到字符,而是一种更改解码器状态的方式。
未在输入代码集中形成有效字符的字节序列。但是,当输入中提供了其他字节时,如果后续调用了转换函数(例如 iconv() 函数),则此不完整字符可能会形成有效字符。在转换多字节流时,这种情况很常见。
在输入代码集中有效但在输出代码集中没有一致字符的字符。
不一致字符的转换。根据实现和转换选项,这些字符在输出中可省略或替换为表示出现不一致转换情况的一个或多个字符。缺省情况下,Oracle Solaris iconv() 函数会把不一致字符替换为问号 ("?")。