分享

linux下文件编码格式转换方法

 gearss 2022-01-08

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多