*nix下文件字符编码转换方法

3 篇文章 0 订阅

为毛需要转换

历史原因,公司内部的source code中充斥着大量的GBK编码,但是明显UTF-8更适合国际化的字符需求。如果不转换,在IDE中各种字符编码切换,各种蛋疼。一不小心,多种编码一叠加,造成不可逆的乱码保存,那就永远乱码的噩梦了。
当然,更好的国际化支持,除了统一用UTF-8保存文件之外,更好的做法是,source code中压根就不应该出现中文(当然,这点可能会被很多人喷,算了,这个不是重点,本文的重点是怎么转)。

如何转换

基本都是利用*nix系本身提供的iconv一行帮你搞定问题。

*nix下的通用做法

这里,*nix是指Unix like(包括Mac)、Linux系下的通用做法,利用输出重定向

find . -name '*.java'| while read file; do iconv -f GBK -t UTF-8 "$file" > /tmp/a; cp /tmp/a "$file"; done

 

这里,你需要修改无非是管道前面的find命令,获取你这种关心的文件就行啦。

Ubuntu下的做法

如果你用的是debian发行版的Ubuntu版本,那么恭喜你,你有稍微简化一点的写法,就是可以真正利用Linux下iconv的-o参数修改同一个文件。

find . -name '*.java' -exec iconv -f GBK -t UTF-8 {} -o {} \;

 

注意:对于替换当前文件自己,-o参数并非在所有Linux下都管用

上述方法,在公司内的Linux发行版下,就不好使。会造成被修改文件被清空!
所以,安全第一,你还是上面的通用命令吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值