|
iconv
应该算是LINUX下最常用的文本编码转换工具,一般系统自带。使用方法如
iconv -f gb2312 -t utf-8 filename -o newfilename
参数解释:
-f,--from 文件原编码
-t,--to 转换之后的编码
-o,--output 转换成功后另存为的文件名,如果省略此参数和新文件名,则将转换结果输出到标准输出)
enca
这个和 iconv 命令一样,也是用来转换文本编码的。相对于 iconv ,它有两个优点,一是可以查看文件编码,二是可以直接批量转换文件夹下所有文件(非递归)。 但它有一个非弱点的弱点,即非系统内置。下载地址:
http://pkgs.repoforge.org/
使用方法:
//转换编码: -x 表示目标编码 -L zh_CN 指定语言,这个好蛋疼,能省略么?不省略真心不想用^^
enca -L zh_CN -x utf-8 filename
//enca -L zh_CN -x utf-8 * //可以批量转换文件夹下所有文件(非递归)
//查看文件编码
enca -L zh_CN filename
这个工具不太建议使用,只是因为它不是系统内置。而且可以被 iconv 替代,如下面我简单写了个 iconv1 放到PATH目录下:
dir=$1
touch tmp
for i in $dir/*
do
iconv -c -f gbk -t utf8 $i > tmp
cp tmp $i
done
rm -rf tmp
执行 iconv1 src/ 即可批量转换 src 目录下所有文件编码,效果同 enca 想要递归转换?也很简单:
dir=$1
filelist=`find $dir -type f`
for i in $filelist
do
iconv -c -f gbk -t utf8 $i > tmp
mv tmp $i
echo $i
done
使用方法同上。
convmv
这个命令不同于上面两个,它是用来转换文件名中的乱码的。比如说我们项目中一般会有 "协议文档.doc",在LINUX下文件名就会显示乱码,就可以通过下面命令转换:
convmv -f gb2312 -t utf-8 -r doc/ --notest
其它参数不用说吧,用法和 iconv 非常相似,不同的是,它内置了递归,即 -r 参数,另一个参数 --notest 如果不加上,表示测试显示而非正式转换,所以呢如果只是想看一下乱码中的文件名是什么,就忽略此参数吧,否则记得加上此参数。 同样可惜的是,此命令也非一般LINUX发行版内置,下载地址同上:
http://pkgs.repoforge.org/
|
|