Linux批量转换文件编码

这两天在将以前的项目移到虚拟机的ubuntu中,遇到了一个问题,就是文件编码格式,在window下默认是GBK,在linux下默认是utf-8,以前的项目因为表配置等原因,编码格式用的gb2312,导致移到linux下的时候所有的中文乱码了,虽然可以通过改变linux的环境来解决,但是考虑到一些原因,比如便于维护等,打算用转换文件格式来解决,就搜索了下资料,进行了一些整理归纳。

其实有很多办法,这里写的是最简单,并经过测试的方法。

1.enca(如果没有这个命令的,可以apt-get一下)

格式:$enca -L 当前语言 -x 目标编码 文件名

 具体使用方法可以enca --help一下,这里讲下一些问题,首先,你可以enca 文件名

如图,它可以显示该文件的编码格式,然后你就可以用上面的命令进行转换,但是呢,它有个问题,支持的格式不多,比如它就不支持GB2312.....(可以使用enca --list languages来查看,如图所示)


当然,你也可以不指定文件编码,只指定目标编码,也是可以直接转换的,比如上面这个我就是不指定直接解决的。如果是想批量转换文件下的所有文件,用*替换文件名即可,但是有个很大的问题,就是不支持-r,即递归子文件夹,这是一个很D疼的问题,所以我放弃了这个命令。

2.iconv

这个命令大家应该都知道,linux下转换文件格式常用的命令,但是有个问题,就是不能批量转,怎么办呢?这时候就要用到linux强大的命令行了,还记得find命令吗,这个命令可以用来做很多事,这里我们就用来来解决这个问题,下面的命令是我搜索资料时找到的,具体如下:

find default -type d -exec mkdir -p utf/{} \;
find default -type f -exec iconv -f GBK -t UTF-8 {} -o utf/{} \;

命令的意思就是将default下的所有文件转化为UTF-8,并保持目录结构不变,将转化后的文件放到utf文件夹下,具体的default和utf你们可以自行更改,转化完后在自己mv或cp下我就不具体说了,希望以上这些对你们有所帮助。



参考资料:http://www.cnblogs.com/singleboss/archive/2012/05/08/2490864.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目中有很多文件因为编码的原因导致用户使用的时候看到的是乱码,或是不兼容的情况,网上找了一圈 也没有适合咱程序员的转码的工具,所以写了一个批量转换工具 虽然已经使用在我司生产项目中,但还是建议你转换前备份一次文件 注意(使用前必看): 注意(使用前必看): 注意(使用前必看): 支持所有文本格式的文档(如 txt,js,css,java,c..),二进制或程序(如word,excel,exe文件)不要使用本转换工具,因为是JAVA程序 需要你的机器上已经安装了JDK 使用方法: 1,打开start.sh文件,windows用户把扩展名.sh修改为.bat 2,修改三个双引号("")中的参数, 第一个参数是文件夹路径, 第二个参数表示要转换成的编码utf-8,utf-8-bom,ansi 等编码都支持 第二个参数表示要转换文件类型,以扩展名的形式提供支持,可以提供多个文件扩展名 以空格分隔 如:我要转换E盘下 E:\work_architecture\doc目录下的所有js 和 css 文件 编码utf-8 那么,你要执行的命令就是 java -jar code_conversion.jar "E:\work_architecture\doc" "utf-8" ".js .css" 还是挺简单的吧~~ 支持的功能: 1,批量转换,子目录自动发现 2,文件编码自动识别,所以使用的时候不用提供原文件编码;识别不了不会转换,保证项目文件的安全 3,支持utf-8-bom编码 4,兼容Linux & Windows & Mac系统 5,不用安装,只要机器有JDK就可以使用 需要源码的请邮件[email protected] 或 私信我

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值