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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

comli_cn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值