活到老学到老  

记录遇到问题的点点滴滴。

Linux 利用iconv批量转换GBK文件到UTF-8编码方法

8年前发布  · 2189 次阅读
  linux  iconv 

查看文件编码

file -i filename


递归转换(包括子文件夹)

find default -type d -exec mkdir -p utf/{} \;
find default -type f -exec iconv -f GBK -t UTF-8 {} -o utf/{} \;


这两行命令将default目录下的文件由GBK编码转换为UTF-8编码,目录结构不变,转码后的文件保存在utf/default目录下。

注意:如果原来就是utf-8编码,使用iconv -f GBK -t UTF-8命令转换后,会出现乱码,或截断等各种问题;
一定要保证原文件是不是utf-8编码;


使用如下命令把文件编码先查出来:

find default -type f -exec file -i {} \; > /tmp/a


查询是否存在已经是utf-8编码的文件:

grep "charset=utf-8" /tmp/a


iconv有如下选项可用:

输入/输出格式规范:
-f, --from-code=名称 原始文本编码
-t, --to-code=名称 输出编码

信息:
-l, --list 列举所有已知的字符集

输出控制:
-c 从输出中忽略无效的字符
-o, --output=FILE 输出文件
-s, --silent 关闭警告
--verbose 打印进度信息