批量将Java源代码文件的编码从GBK转为UTF-8

转载 2014年08月20日 15:16:52

近在做一个项目,需要从以前的另外一个项目迁移大量源代码过来,但是由于另一个项目采用GBK编码格式,而新项目采用的UTF-8编码格式,如果直接把Java源代码复制到Eclipse中所有的中文信息都出现乱码。

将文本文件的编码格式从GBK转UTF-8的方式有很多,比较早以前我处理方式都是自己写程序,从文本文件中用GBK编码读取数据,转为String类型,然后通过UTF-8编码重新写入文本文件实现转码,现在经常使用 Apache Common 组件,用commons-io.jar实现文件的读取和写入,代码如下:

(commons-io 下载见:http://commons.apache.org/io/download_io.cgi

//GBK编码格式源码路径 
String srcDirPath = "D:\\dev\\GBK\\src"; 
//转为UTF-8编码格式源码路径 
String utf8DirPath = "D:\\dev\\UTF8\\src"; 
        
//获取所有java文件 
Collection<File> javaGbkFileCol =  FileUtils.listFiles(new File(srcDirPath), new String[]{"java"}, true); 
        
for (File javaGbkFile : javaGbkFileCol) { 
      //UTF8格式文件路径 
      String utf8FilePath = utf8DirPath+javaGbkFile.getAbsolutePath().substring(srcDirPath.length()); 
       //使用GBK读取数据,然后用UTF-8写入数据 
      FileUtils.writeLines(new File(utf8FilePath), "UTF-8", FileUtils.readLines(javaGbkFile, "GBK"));        
}

很简单的几行代码,就可以批量将GBK格式的java文件转为UTF-8格式。 基本上所有文本文件的编码转换都可以采用这种方式。

工程文件见:http://www.oschina.net/code/snippet_97118_11332

注意:我在项目中,遇见GBK和UTF8混合编码,如果文件本身是UTF8,而程序中以GBK的格式

读取,再转为UTF8,将出现问题,所以,最好还是先判断下文件类型。简单的方式为


按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码的格式。其实,如果项目运行的平台就是中文操作系统,如果这些文本文件在项目内产生,即开发人员可以控制文本的编码格式,只要判定两种常见的编码就可以了:GBK和UTF-8。由于中文Windows默认的编码是GBK,所以一般只要判定UTF-8编码格式。
   对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65,所以,判定是否是UTF-8编码格式的代码片段如下:
          File file = new File(path);
          InputStream in= new java.io.FileInputStream(file);
          byte[] b = new byte[3];
          in.read(b);
          in.close();
          if (b[0] == -17 && b[1] == -69 && b[2] == -65)
              System.out.println(file.getName() + ":编码为UTF-8");
          else
              System.out.println(file.getName() + ":可能是GBK,也可能是其他编码");

详见:http://www.cnblogs.com/java0721/archive/2012/07/21/2602963.html

但是该方法不完善,有很多UTF-8编码的文本文件,不能用这个来判断。


注意在eclipse 中编码方式的设置:
1.window->preferences->General ->workspace 修改Text file encoding
2.window ->preferences -> General ->Content types   选中Text,将其 default encoding 设置。
项目名右键->Resources  中可查看该项目的Text file encoding 方式。


本文转自:http://my.oschina.net/binny/blog/62959

使用eclipse插件批量将Java源代码文件的编码从GBK(或其他编码)转为UTF-8

使用到的插件:com.lifesting.tool.encoding_1.0.0.jar
  • findlymw
  • findlymw
  • 2014-04-17 15:04:01
  • 4821

某编码的文本文件批量转码为UTF8工具及java代码

  • 2010年08月11日 17:28
  • 7KB
  • 下载

使用java进行文件编码转换

在开发过程中,可能会遇到文件编码的转换,虽然说开发工具eclipse可以转换编码,但是有的情况却很不方便。比如,原来文件本身的编码是GBK,现在要转换成UTF-8,如果直接在eclipse中把文件编码...
  • mhmyqn
  • mhmyqn
  • 2014-07-17 22:56:11
  • 8833

将GBK格式的java源文件,转为UTF-8格式文件

转换程序出自:http://www.oschina.net/code/snippet_97118_11332 /** * 将制定目录下的所有Java源文件的编码格式从GBK修改为UTF-8 ...
  • jbb0403
  • jbb0403
  • 2015-04-29 16:55:36
  • 1918

gbk和utf8互转工具

  • 2016年04月12日 16:25
  • 25KB
  • 下载

批量文件转码工具(支持GBK,UTF-8转换)

  • 2017年11月24日 10:54
  • 27KB
  • 下载

批量把文件编码由GBK转为UTF8

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; i...
  • lanyunit
  • lanyunit
  • 2011-07-29 16:45:33
  • 2253

shell脚本将gbk文件转化为utf-8

使用注意项: 原来文件格式gbk的,否则可能出现utf-8转utf-8乱码。 #!/bin/bash function gbk2utf(){ file="$1" echo "处理...
  • pangyemeng
  • pangyemeng
  • 2017-07-04 13:36:18
  • 932

Linux gbk文件批量转utf-8

背景: 写android程序,在windows下默认创建的是gbk编码的,后来将程序倒腾到Linux下,发现所有中文字符全部乱码! 原来linux的默认编码是utf-8(我是linux小白)! ...
  • winyou2015
  • winyou2015
  • 2015-10-22 11:29:11
  • 764

Eclipse:批量将Java源代码文件的编码从GBK转为UTF-8

问题场景:由于老项目采用GBK编码格式,而新项目采用的UTF-8编码格式,如果直接把Java源代码复制到Eclipse中所有的中文信息都出现乱码。将文本文件的编码格式从GBK转UTF-8的方式有很多,...
  • jj88888
  • jj88888
  • 2013-10-14 16:53:25
  • 3204
收藏助手
不良信息举报
您举报文章:批量将Java源代码文件的编码从GBK转为UTF-8
举报原因:
原因补充:

(最多只允许输入30个字)