Windows下的纯文本文件拷贝到Linux下打开后经常会出现乱码,尤其是中文部分,这主要是因为WIndows使用的是ANSI编码,也就是GBK/GB2312/GB18030系列编码(互相兼容),而Linux下是utf-8编码,所以彩绘出现乱码

幸好Linux下有一个iconv命令,可以实现内码转换

NAME
       iconv - Convert encoding of given files from one encoding to another

SYNOPSIS
       iconv -f encoding [-t encoding] [inputfile]...

比如将gbk编码的文件f.txt转换成utf-8编码

iconv -f gbk -t utf-8 f.txt g.txt
rm -f f.txt
mv g.txt f.txt

如果要转换的文件较多,则最好通过shell脚本完成

例如要将ifly子目录下的所有头文件(gbk编码)都转换成utf-8编码,则脚本如下

for f in `ls ifly`; do
    iconv -f gbk -t utf-8 "ifly/"$f > "ifly2/"$f
done
rm -rf ifly
mv ifly2 ifly 

可以看到为for命令提供列表的是ls命令,对于更复杂的场景可以将其替换成更复杂的命令,比如find加xargs什么的

Logo

更多推荐