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 系统中一款标准的、通用的编码转换工具,它几乎能够支持日常使用的所有的编码,解决文件乱码问题,是一款非常好用文件编码转换工具。