1. 使用iconv进行转换

将使用gb18030编码的文件file1.txt转换为utf-8编码的文件file2.txt:

iconv -f gb18030 -t utf-8 file1.txt -o file2.txt

但是这个命令不好使,一方面容易重复转换,另一方面不支持通配符,无法成批转换,还有如果转换出错就会停止转换。
可以加上-c来忽视非法字符:

iconv -c -f gb18030 -t utf-8 file1.txt -o file2.txt

有时候转换需要的时间比较长,或者输出比较多,需要在后台运行:

nohup iconv -f utf-8 -t gb18030 file2.txt -o file1.txt &>file12.out &

这条命令实现了将utf-8格式的file2.txt转换为gb18030格式的file1.txt,且在后台运行,输出放在file12.out中。

2. iconv命令

【功能】

对于给定文件把它的内容从一种编码转换成另一种编码。

【描述】

-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那么会输出到标准输出. 

*实际需求,从hive中取出的数据是utf8的,要load到mysql中,gbk编码。所以在load之前要先对文件进行转码。

mysql_cmd = "iconv -c -f utf-8 -t gbk ./data/al_ver_" + yesterday_time + ".xls -o ./data/GBK_al_ver_" + yesterday_time + ".xls "
print(mysql_cmd)
os.system(mysql_cmd)
 
mysql_cmd = "mysql -h60.28.200.78 -uroot -pyeelion -A LogStat_RT  -e \"load data local  infile \'./data/GBK_al_ver_" + yesterday_time + ".xls ' into table HiveData_508\""
print(mysql_cmd)
os.system(mysql_cmd)

3. 以指定的编码打开文件

将file.txt文件按照GB18030的格式打开:

vim file.txt -c "e ++enc=GB18030"

vim字符编码设置,修改~/.vimrc文件

4. 如何查看一个文件的编码

(1)在vim下面使用:

:set fileencoding
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐