Linux下GBK转UTF8文件编码批量转换命令

使用iconv 转换

用法见: iconv命令介绍

iconv 是比较常用的方法,也是系统自带的。下面这两个命令是第三方的,分别可以用来转换文件编码和文件名编码,并且这两个命令都可以用 yum 方式安装。

enca 查看文件的编码

enca 用法

$ enca -L zh_CN file # 检查文件的编码
$ enca -L zh_CN -x UTF-8 file # 将文件编码转换为"UTF-8"编码
$ enca -L zh_CN -x UTF-8 file1 file2 # 如果不想覆盖原文件可以这样

除了有检查文件编码的功能以外,”enca”还有一个好处就是如果文件本来就是你要转换的那种编码,它不会报错,还是会print出结果来, 而”iconv”则会报错。这对于脚本编写是比较方便的事情。

转换单个文件的编码

$ enca -L none -x utf-8  index.html

转换多个文件的编码

$ enca -x utf-8 *

convmv 文件名编码批量转换

Convmv 语法

$ convmv -f 源编码 -t 新编码 [选项] 文件名

Convmv 常用参数

-r 递归处理子文件夹
–notest 真正进行操作,请注意在默认情况下是不对文件进行真实操作的,而只是试验。
–list 显示所有支持的编码
–unescap 可以做一下转义,比如把%20变成空格

转换一个文件由GBK转换成UTF-8

convmv -f GBK -t UTF-8 --notest utf8 filename

GBK->UTF-8文件编码批量转换脚本

$ find default -type f -exec convmv -f GBK -t UTF-8 --notest utf8 {} -o utf/{} \;