linux下文件格式的转化

时间:2021-10-03 17:31:00

             今天在这里和大家分享一个命令: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来加载数据,然后通过自定义脚本来实现转化。

希望对有有所帮助。