今天在这里和大家分享一个命令:iconv,最常用方式
iconv -l :列出当前环境下支持的编码。形式 iconv -l |grep utf8 等。
iconv -t utf8 -f GBK $file> /data/disk07/libj/term_register_utf8/$(basename $file):把当前的的格式 GBK 转成 utf8格式。
注:一开始我查看文件格式,用vim编辑器使用set fileencoding;看到的是latin格式的,但是怎么也转成不了utf8的,还是乱码。捣鼓了一会,用iconv -l |grep latin找不到,试验了下用上面那个命令,是可以的。用file -i $file 也能够看出来是utf8的格式。
如果批量转码的话需要写成脚本来做,下面是我之前写的一个简单的脚本:
#!/bin/bash
cd /data/disk07/libj/term_register
for file in `ls` do iconv -t utf8 -f GBK $file> /data/disk07/libj/term_register_utf8/$(basename $file)done
还有一些常用的参数
-f encoding :把字符从encoding编码开始转换。
-t encoding :把字符转换到encoding编码。
-l :列出已知的编码字符集合
-o file :指定输出文件
-c :忽略输出的非法字符
-s :禁止警告信息,但不是错误信息
--verbose :显示进度信息
-f和-t所能指定的合法字符在-l选项的命令里面都列出来了。
如果在大数据上面处理的话,比如说hdfs上面,进行转码的话,我目前做的就是用hive来加载数据,然后通过自定义脚本来实现转化。
希望对有有所帮助。