iconv
原创
©著作权归作者所有:来自51CTO博客作者rookie_master的原创作品,请联系作者获取转载授权,否则将追究法律责任
描述
作用: "iconv"是"Linux"系统自带的用于转换"文件"编码的命令行工具
用法: iconv [OPTION...] [-f ENCODING] [-t ENCODING] [INPUTFILE...]
注意: linux配置文件中默认的字符集编码为"UTF-8";"UTF-8"是"unicode"的一种表达方式;"gb2312"是和"unicode"都是字符的编码方式,所以说"gb2312"跟"utf-8"的概念应该不是一个层次上的
选项
1、控制"输入/输出"格式的选项
选项 | 解释说明 |
-f ENCODING 、--from-code=ENCODING | 原始文本编码 |
-t ENCODING 、--to-code=ENCODING | 输出编码 |
2、控制字符转换的选项
选项 | 解释说明 |
-c | 从输出中忽略无效的字符 |
-o 、--output=FILE | (可选)输出文件 |
-s 、--silent | (忽略警告)不显示有关转换出错的信息 |
--verbose | 打印进度信息 |
-? 、--help | 显示此帮助并退出 |
--usage | 给出简要的用法信息 |
-V 、--version | 显示版本信息并退出 |
--unicode-subst=FORMATSTRING | 替代不可转换的"Unicode"字符 |
--byte-subst=FORMATSTRING | 替代不可转换的字节 |
--widechar-subst=FORMATSTRING | 替代不可转换的宽字符 |
3、输出信息
选项 | 解释说明 |
-l 、--list | 列出iconv支持的编码列表 |
实例
# 查看文件 (文件编码:gb2312)
[root@ /cdly/awk]# file file.txt # 输出:file.txt: ISO-8859 text, with CRLF line terminators
# 直接在linux下查看是无法解析中文
[root@ /cdly/awk]# cat file.txt
test
!!
# 转换: gb2312 --> utf8 (省略-o默认输出在终端,可以使用输出进行保存文件">"、">>")
[root@ /cdly/awk]# cat file.txt |iconv -f gb2312 -t utf8
你好
test
测试!!
[root@ /cdly/awk]# iconv -f gb2312 -t utf8 file.txt
你好
test
测试!!
# 转换: gb2312 --> utf8 将转换后的文件保存到"file_new.txt"内
[root@ /cdly/awk]# iconv -f gb2312 -t utf8 file.txt -o file_new.txt
# 查看文件类型
[root@ /cdly/awk]# file file*
file_new.txt: UTF-8 Unicode text, with CRLF line terminators
file.txt: ISO-8859 text, with CRLF line terminators
# 文件"file_new.txt"编码被修改成"utf-8"因此中文可以正常被解析
[root@ /cdly/awk]# cat file_new.txt
你好
test
测试!!
# 压缩包内容如果编码是"GB2312",可以使用以下方式进行操作
[root@ /cdly/awk]# zcat file.tar.gz |iconv -f GB2312 -t utf-8