Go to main content

手册页第 7 部分:标准、环境、宏、字符集和杂项

退出打印视图

更新时间: 2022年7月27日 星期三
 
 

iconv_unicode(7)

名称

iconv_unicode - Unicode 代码集转换

描述

下表列出了可用作 iconv(1)iconv_open(3C)cconv_open(3C)fromcodetocode 参数的受支持 Unicode 编码或编码方案(Unicode 编码形式的字节串行化)的名称和说明。另外还有 FSS-UTF、UTF8 等别名。

通过运行 iconv -l 命令(如 iconv(1) 手册页中所述),可以获取当前系统中可用的 iconvcconv 转换(包括别名和可选变体级别)。

有关规范名称与可选变体级别的受支持别名之间映射的其他信息,请参阅 alias(5) 手册页和 /usr/lib/iconv/alias 文件。

Encoding Form
说明
UTF-8
由 1-4 个字符字节组成的多字节序列
UTF-16
对于 U+0000-U+D7FFU+E000-U+FFFF,以一个 16 位实体表示;对于 U+10000-U+10FFFF,以两个 16 位实体表示。采用平台缺省字节排序,且包括字节顺序标记 (Byte Order Mark, BOM)。有关 BOM 的说明,请参见下文。
UTF-16-INTERNAL
UTF-16,不带 BOM
UTF-16BE
UTF-16,采用大尾数法字节排序,不带 BOM
UTF-16-BIG-ENDIAN
UTF-16,采用大尾数法字节排序,包括 BOM
UTF-16LE
UTF-16,采用小尾数法字节排序,不带 BOM
UTF-16-LITTLE-ENDIAN
UTF-16,采用小尾数法字节排序,包括 BOM
UTF-16-SWAPPED
UTF-16,字节存储顺序与本地平台相反,不带 BOM
UTF-32
以 32 位实体表示(采用平台缺省字节排序),包括 BOM
UTF-32-INTERNAL
UTF-32,不带 BOM
UTF-32BE
UTF-32,采用大尾数法字节排序,不带 BOM
UTF-32-BIG-ENDIAN
UTF-32,采用大尾数法字节排序,包括 BOM
UTF-32-SWAPPED
UTF-32,字节存储顺序与本地平台相反,不带 BOM
UTF-32LE
UTF-32,采用小尾数法字节排序,不带 BOM
UTF-32-LITTLE-ENDIAN
UTF-32,采用小尾数法字节排序,包括 BOM
UCS-2
对于 U+0000-U+D7FFU+E000-U+FFFF,以 16 位实体表示(采用平台缺省字节排序),且包括字节顺序标记 (byte order mark, BOM)
UCS-2-INTERNAL
UCS-2,不带 BOM
UCS-2BE
UCS-2,采用大尾数法字节排序,不带 BOM
UCS-2-BIG-ENDIAN
UCS-2,采用大尾数法字节排序,包括 BOM
UCS-2LE
UCS-2,采用小尾数法字节排序,不带 BOM
UCS-2-LITTLE-ENDIAN
UCS-2,采用小尾数法字节排序,包括 BOM
UCS-2-SWAPPED
UCS-2,字节存储顺序与本地平台相反,不带 BOM
UCS-4
以 32 位实体表示(采用平台缺省字节排序),包括字节顺序标记 (byte order mark, BOM)
UCS-4-INTERNAL
UCS-4,不带 BOM
UCS-4BE
UCS-4,采用大尾数法字节排序,不带 BOM
UCS-4-BIG-ENDIAN
UCS-4,采用大尾数法字节排序,包括 BOM
UCS-4LE
UCS-4,采用小尾数法字节排序,不带 BOM
UCS-4-LITTLE-ENDIAN
UCS-4,采用小尾数法字节排序,包括 BOM
UCS-4-SWAPPED
UCS-4,字节存储顺序与本地平台相反,不带 BOM

UCS(Universal Character Set,通用字符集)是指字符集与 Unicode 相同的 ISO/IEC 10646 系列标准。

字节顺序标记也称为 BOM (U+FEFF),是文件或字符流开头中的一个特殊字符,表示后续字符的字节顺序。UCS-2、UTF-16、UTF-32 和 UCS-4 文件与字符流通常以 BOM 字符开头,表示文件或字符流中使用的字节排序。

UTF-8 到 UTF-8 转换仅将字节从输入缓冲区移动到输出缓冲区,而不进行任何转换。在移动期间,将执行非法字符检查,以筛选出任何可能有害的字符字节。此类非法字符将导致转换失败。

UTF-7 是传统的 7 位 Unicode 转换格式,仅支持在 UTF-8、UCS-2 和 UCS-4 之间转换 iconv

UTF-EBCDIC 是 UTF-8 的传统 EBCDIC 兼容变体,仅支持在 UTF-8 之间转换 iconv

附注

iconv 还支持在 Unicode 编码与许多不同代码集之间进行转换。此类代码集的列表包括采用中文、日文、韩文和许多其他语言的 ISO 8859 字符集、EBCDIC 代码页、EUC(Extended Unix Code,扩展 Unix 代码)和 ISO 2022 编码等(请参见 iconv_extra(7)iconv_ja(7)iconv_ko(7)iconv_zh(7)iconv_zh_HK(7)iconv_zh_TW(7))。

如果源字符代码值无法映射到目标代码集中的有效字符,则将其视为非法或非相同字符。如果缺少源字符代码值的显式信息,则 iconv 代码转换将使用以下规则确定字符是非法字符还是非相同字符:

如果源字符代码值不在由源代码集标准定义的范围内,则将其视为非法字符。如果源字符代码值在由该标准定义的范围内,则将其视为非相同字符,即使源字符代码值映射到未定义的位置或有效范围内的预留位置也是如此。如果目标代码集是非 Unicode 代码集,则非相同字符将映射到 ?(ASCII 兼容代码集中的 0x3f);如果目标代码集是 Unicode 代码集,则将映射到 Unicode 替换字符 (U+FFFD)。

BOM 在受支持的编码中作为第一个字符出现时,将控制解释以下 Unicode 字符序列的方式。如果 BOM 并非此类编码或不支持 BOM 的 Unicode 编码的第一个字符,则 BOM 字符 (U+FEFF) 将被解释为零宽度不间断空格 (ZWNBSP) 字符,且在字节排序方面不影响解释 Unicode 字符的方式。

当目标代码集是 UCS-2、UTF-16、UTF-32、UCS-4、UCS-2-BIG-ENDIAN、UCS-2-LITTLE-ENDIAN、UTF-16-BIG-ENDIAN、UTF-16-LITTLE-ENDIAN、UCS-4-BIG-ENDIAN、UCS-4-LITTLE-ENDIAN、UTF-32-BIG-ENDIAN 和 UTF-32-LITTLE-ENDIAN 之一时,iconv 代码转换输出缓冲区开头应有一个 BOM 字符。

当源代码集是 UCS-2、UTF-16、UTF-32 或 UCS-4 且没有 BOM 作为第一个输入字符出现时,将对指定给 iconv 代码转换的输入字节流采用当前系统的字节排序。

示例

示例 1 iconv 库模块文件名

在转换库 /usr/lib/iconv(请参见 iconv(3C))中,库模块文件名由两个符号元素组成,以百分比符号 (%) 分隔。第一个符号指定源代码集,即,要转换的代码集;第二个符号指定目标代码集,即,要将第一个代码集转换为的代码集。

例如,要从传统 UTF-7 代码集转换为 UTF-8 代码集的库模块文件名是 UTF-7%UTF-8.so

示例 2 cconv 库模块文件名

对于某些转换,iconv(3C) 将调用 cconv(3C) 接口来执行转换。cconv 转换模块是带有 .bt 后缀(由 geniconvtbl(1) 生成并放置在同一 /usr/lib/iconv 库中)的二进制表。cconv 库模块文件名由源代码集和目标代码集的符号元素组成,以加号 (+) 分隔。cconv 转换通常分两步执行,以 UTF-32 作为中间编码。

例如,要从日文 EUC 代码集转换为 UTF-32 代码集的 cconv 库模块文件名是 eucJP+UTF-32.bt

文件

/usr/lib/iconv/*.so

iconv 转换模块

/usr/lib/iconv/*.bt

iconv(1)cconv(3C)iconv(3C)cconv 代码转换二进制表

/usr/lib/iconv/geniconvtbl/binarytables/*.bt

geniconvtbl 转换二进制表

/usr/lib/iconv/alias

代码集名称的别名表文件

另请参见

geniconvtbl(1)iconv(1)cconv(3C)cconv_close(3C)cconv_open(3C)cconvctl(3C)iconv(3C)iconv_close(3C)iconv_open(3C)iconvctl(3C)alias(5)geniconvtbl-cconv(5)iconv_extra(7)iconv_ja(7)iconv_ko(7)iconv_zh(7)iconv_zh_HK(7)iconv_zh_TW(7)

The Unicode Consortium.《The Unicode Standard, Version 6.2.0》(Mountain View,CA:The Unicode Consortium 出版,2012。ISBN 978-1-936213-07-8)

由 Yergeau, F. 编著的《UTF-8, a transformation format of Unicode and ISO 10646, RFC 2044》,Alis Technologies 出版,1996 年 10 月。

由 Ohta, M. 编著的《Character Sets ISO-10646 and ISO-10646-J-1, RFC 1815》,东京工业大学出版,1995 年 7 月。

由 Simonson, K. 编著的《Character Mnemonics & Character Sets, RFC 1345》,Rationel Almen Planlaegning 出版,1992 年 6 月。

由 Goldsmith, D. 和 M.Davis 合著的《UTF-7 - A Mail-Safe Transformation Format of Unicode, RFC 1642》,Taligent, Inc. 出版,1994 年 7 月。