11.1.1. 用 iconv 命令来转换文本文件

[提示]提示

iconv(1) 是 libc6 软件包的一部分并且它可以在类 Unix 的系统上转换字符的编码。

你能够通过如下的命令用 iconv(1) 来转换文本文件的编码。

  1. $ iconv -f encoding1 -t encoding2 input.txt >output.txt

编码值是大小写不敏感的,且会在匹配时忽略“-”和“_”。可以使用“iconv -l”命令检查支持的编码。

表 11.2. 编码值和用法的列表

编码值用法
ASCII美国信息交换标准代码,7位代码不带重音符号
UTF-8用于所有现代操作系统的多语言标准
ISO-8859-1旧的西欧语言标准,ASCII + 重音符号
ISO-8859-2旧的东欧语言标准,ASCII + 重音符号
ISO-8859-15旧的带有欧元符号的西欧语言标准(ISO-8859-1
CP850code page 850,用于西欧语言的微软 DOS 的带有图形的字符,ISO-8859-1 的变体
CP932code page 932, 日语 Microsoft Windows 的 Shift-JIS 变体
CP936code page 936,用于简体中文的微软操作系统风格的 GB2312GBK 或者 GB18030 的变体
CP949code page 949,用于韩语的微软操作系统风格的 EUC-KR 或者 Unified Hangul Code 的变体
CP950code page 950,用于繁体中文的微软操作系统风格的 Big5 的变体
CP1251code page 1251,用于西里尔字母的微软操作系统风格的编码
CP1252code page 1252,用于西欧语言的微软操作系统风格的 ISO-8859-15 的变体
KOI8-R用于西里尔字母的旧俄语 UNIX 标准
ISO-2022-JP日文邮件的标准编码,只使用 7 位字节
eucJP老的日文 UNIX 标准的 8 位字节,和 Shift-JIS 完全不同
Shift-JIS日文 JIS X 0208 附录 1 标准 (参见 CP932)
[注意]注意

一些编码只支持数据转换,它不能作为语言环境的值 (第 8.4.1 节 “编码的基础知识”)。

ASCIIISO-8859 这样适用于单字节的字符集,字符编码和字符集几乎指的是同一件事情。

对于多字符的字符集,比如说,用于日文的 JIS X 0213,或用于差不多所有语言的 Universal Character Set (UCS, Unicode, ISO-10646-1) , 有多种编码方案来序列化它们的字节数据。

对于以上这些,字符集和字符编码之间有着明显的区别。

对某些计算机厂家而言,code page 是作为字符编码表的同义词来使用。

[注意]注意

请注意,大部分编码系统共享 ASCII 的 7 位字符的同样编码,但也有一些列外。如果你从通常所说的 shift-JIS 编码格式,转化老的日文 C 语言程序和 URL 数据,到 UTF-8 格式,你需要使用 “CP932“ 作为编码名来代替 “shift-JIS“ 来得到期望的结果: 0x5C → “\“ 和 0x7E → “~“.否则,这些将被转化为错误的字符。

[提示]提示

recode(1) 也可能被使用并且不仅仅是 iconv(1),fromdos(1),todos(1),frommac(1) 和 tomac(1) 功能的结合。想要获得更多信息,请参见 “info recode“。