shell脚本-批量gbk转utf-8
背景
原因很简单,当初工程拆分,把老代码的gbk文件原封不动的挪到了新的工程,gradle编译已经指定了options.encoding = “UTF-8” 但是还是会出现gbk乱码导致编译不成功。只怪自己太菜不会用gradle解决,只能退而求其次用shell脚本进行gbk转utf-8.
代码
在#!/bin/sh
isEnc()
{
local temp=`iconv -f $2 $1 1>/dev/null 2>/dev/null && echo 'true'`;
echo $temp
if [ "$temp" = 'true' ]; then
return 0;
fi;
return -1;
}
echo "h.sh directory c"
echo "h.sh directory h"
for file in `find $1 -name "*.$2"`;
do
if $(isEnc $file gbk); then
echo convering : $file
iconv -f GBK -t utf-8 $file > $file.t
mv $file.t $file
fi;
done
echo DONE
碰到的问题
一开始简单粗暴地进行GBK转utf-8没想到,会出现utf-8转utf-8的情况导致本来utf-8的文件出现了乱码,后面只能想法子判断下文件编码格式。简单粗暴的在do 循环中判断,却发现local只能在function中使用一次(还是我太菜),只能将判断方法单独封装了。