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中使用一次(还是我太菜),只能将判断方法单独封装了。

posted @   emiya丶zero  阅读(210)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示