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中使用一次(还是我太菜),只能将判断方法单独封装了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架