还真不知道怎么来命名这个帖子的标题,我的意思是如何在gbk,gb18030,gb2312,utf8编码中创建的文件实现互相转换。 并不是所有的Linux分发版本都采用一种编码,比如RedFlag默认采用GB18030的编码,当然这还不包括自己修改系统默认编码。因此编码之间转换就很有必要了。
编码转换分为两个部分:内容和文件名。
内容的转换:
iconv显然是最佳工具,目前支持绝大部分编码,而且大部分系统自带。不过对GB18030并不能完全支持。
iconv的基本用法:
iconv -f -t -o orig_file
-f, --from-code=名称 原始文本编码
-t, --to-code=名称 输出编码
-o, --output=FILE 输出文件
当然你可以使用 -l 或者 --list来查查看目前支持的编码。
文件名的转换
显然,convmv是对付这个问题的好工具,他实际上是一个perl程序,不是所有的系统都自带。
使用方法也非常简单:
convmv -f gb2312 -t utf8 -r --notest *
-r表示包含所有子目录,并且连带目录也转换
不加--notest就表示只看看有什么需要转换的,不做实际转换。