首页>教程>Linux 命令手册> 文件内容查看与处理 >Linux iconv 命令 - 支持多语言的字符编码转换工具

Linux iconv 命令 - 支持多语言的字符编码转换工具

iconv 命令(英文全称为 Internationalization Conversion)是 Linux、Unix 系统中一款在命令行中使用的标准的字符编码转换工具,它能够实现在不同的字符编码之间进行转换,能够解决因编码不一致而导致的乱码问题,它支持几乎所有的字符集之间的转换。

相似功能命令对比

如下列出与 iconv 命令非常相似的两个命令:

  • recode:字符编码转换工具,功能非常的相似
  • uconv:字符编码转换工具,会把 Unicode 作为中间代码进行转换

iconv 命令语法结构

在 iconv 命令的语法结构中包含多个部分,如下是详细的解释说明:

iconv [选项] [-f 源编码] [-t 目标编码] [输入文件]...

语法中各部分的说明:

  • [选项]:可选的内容,用于控制命令的相应的执行行为;
  • [-f 源编码]:可选的内容,指定输入文本的字符编码,未指定时使用当前系统区域编码;
  • [-t 目标编码]:可选的内容,指定输出文本的字符编码,未指定时使用当前系统区域编码;
  • [输入文件]:可选的内容,指定需要转换编码的文件,可以同时指定多个文件,未指定时或指定 - 时,从标准输入读取内容。

转码时可以使用的后缀说明:

  • 如果字符串 //IGNORE 附加到使用 to-encoding 指定的编码的后边,那么会丢弃无法转换的字符,并且在转换完成后会输出这些出错误信息。
  • 如果字符串 //TRANSLIT 附加到使用 to-encoding 指定的编码的后边,那么会尽可能将无法转换的字符进行转写。即:当一个字符无法在目标字符集中表示时,可以使用一个或多个相似的字符来近似表示。超出目标字符集且无法进行转写的字符会用问号(?)来表示。

iconv 命令示例

如下给出 iconv 命令的一些使用示例,更加简明的解释如何使用 iconv 命令。

基础文件编码转换

使用 -f 选项指定输入文件的编码,使用 -t 选项指定输出文件的编码:

iconv -f ISO-8859-15 -t UTF-8 < input.txt > output.txt

该示例读取 input.txt 文件中的内容,并将内容从 ISO-8859-15 编码转换为 UTF-8 编码,转码后输出到 output.txt 文件中

[!NOTE]

使用 < 重定向输入「即:指定输入源」,> 重定向输出「即:指定输出位置」

转码时添加音译转换

在目标编码的后面附加 //TRANSLIT 后缀,把无法转换的字符进行相似转换:

echo "abc ß α € àḃç" | iconv -f UTF-8 -t ASCII//TRANSLIT

忽略无法转换的字符

在目标编码的后面附加 //IGNORE 后缀,忽略无法转换的字符:

iconv -f UTF-8 -t GBK//IGNORE test.txt

在将 UTF-8 编码文件转换为 GBK 编码时,如果 UTF-8 字符在 GBK 中无法表示,则会忽略该字符。

直接输出到指定文件

使用 -o 选项指定输出文件,替代使用重定向的方式:

iconv -f GBK -t UTF-8 test.txt -o result.txt

查看系统支持的所有字符集

使用 -l 选项查看当前系统支持的所有的字符集:

iconv -l

iconv 命令选项详解

如下给出 iconv 命令的所有的选项的解释说明:

选项功能说明
-f, --from-code指定输入文本的源字符编码
-t, --to-code指定输出文本的目标字符编码,可附加 //IGNORE / //TRANSLIT 后缀
-l, --list列出当前系统支持的所有的字符集编码
-c静默的丢弃无法转换的字符,不终止命令的执行
-o outputfile, --output=outputfile把转换后的结果保存到指定的文件中
-s, --silent兼容保留选项,没有实际作用
--verbose在转换多个文件时,输出详细的进度信息
-?, --help输出命令的使用摘要并退出
--usage输出命令的简短的使用摘要并退出
-V, --version输出命令的版本号、许可证信息并退出

结语

iconv 命令作为 Linux / Unix 系统中一款标准的、通用的编码转换工具,它几乎能够支持日常使用的所有的编码,解决文件乱码问题,是一款非常好用文件编码转换工具。