1、iconv 简介
iconv是知名的开源跨平台编码转换库,iconv.exe是iconv库在windows下的命令行工具
作用为:对于给定文件把它的内容从一种编码转换成另一种编码。
2、iconv用法
# iconv --help
-f encoding :把字符从encoding编码开始转换。
-t encoding :把字符转换到encoding编码。
-l :列出已知的编码字符集合
-o file :指定输出文件
-c :忽略输出的非法字符
-s :禁止警告信息,但不是错误信息
--verbose :显示进度信息
-f和-t所能指定的合法字符在-l选项的命令里面都列出来了。
- 列出当前支持的字符编码:
# iconv -l
- 将文件file1转码,转后文件输出到fil2中:
# iconv -f EUC-JP-MS -t UTF-8 file1 -o file2 //没-o那么会输出到标准输出.
3、csv文件中文乱码问题解决
- 1、查看文件存储格式(文件编码格式)
# file test.csv
test.csv: ISO-8859 text, with CRLF, LF, NEL line terminators
或者
# file --mime-encoding test.csv
test.csv: iso-8859-1
2、查看系统语言设置
# cat /etc/locale.conf
LANG=en_US.UTF-8
注:可以看出该centos系统是以UTF-8编码的
- 3、编码转换
利用iconv工具将文件从ISO-8859转换成UTF-8
命令:
# iconv -f ISO-8859 -t UTF-8 test.csv -o test2.csv
结果出现以下报错:
iconv: conversion from `ISO-8859' is not supported
Try `iconv --help' or `iconv --usage' for more information.
解决方案:将ISO-8859换成GBK
命令:
# iconv -f GBK -t UTF-8 test.csv -o test2.csv
iconv: illegal input sequence at position 12656765
- 4、查看输出后的文件编码,编码格式已改变
# file 2.csv
2.csv: UTF-8 Unicode text, with CRLF, LF line terminators
编码格式改变后的输出文件已经可以正常显示中文吗,不再乱码!!!
参考文档:
- https://www.cnblogs.com/cosiray/archive/2012/05/04/2483111.html
- https://blog.csdn.net/li0524158198/article/details/40632701
- https://www.cnblogs.com/wqbin/p/11719952.html