在windows下编辑的代码拿到Linux下不能用,原因时Windows下都是GBK编码,而Linux下中文会出现乱码情况。
勉强写了一个脚本,但只能改变当前目录下的文件,还不能嵌套改变下层文件夹里面的文件。还有如果已经有存在UTF-8编码的文件,里面又恰好有中文,会出现错误的。。。先记着,以后再改进吧
#!/bin/bash
#GBK2UTF-8
function convert() {
for file in `ls $1`
do
if test ! -x $file
then
iconv -f GBK -t UTF-8 $file > $file.bak
#rm $file
echo remove old $file...
#echo $file.bak
string_len=`echo "$file.bak" | wc -m`
string_len=$[$string_len-5]
#echo $string_len
filename=`echo $file.bak | cut -c1-$string_len`
echo copy to new file: $filename
mv $file.bak $filename
fi
done
}
convert
另外,还写了单独改一个文件的脚本,也还可以优化,以后多学学shell
#!/bin/bash
#one file GBK2UTF-8
echo "Please input filaname:"
read file
iconv -f GBK -t UTF-8 $file > $file.bak
rm $file
mv $file.bak $file