完整项目带lib
参考
http://toyota2006.iteye.com/blog/540316
判断编码
package change;
import info.monitorenter.cpdetector.io.CodepageDetectorProxy;
import info.monitorenter.cpdetector.io.JChardetFacade;
import java.io.File;
import java.nio.charset.Charset;
public class EncodingUtil {
public static String getFileEncoding(String filePath) {
File file = new File(filePath);
return getFileCharacterEnding(file);
}
/**
* Try to get file character ending.
* </p>
* <strong>Warning: </strong>use cpDetector to detect file's encoding.
*
* @param file
* @return
*/
public static String getFileCharacterEnding(File file) {
String fileCharacterEnding = "UTF-8";
CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();
detector.add(JChardetFacade.getInstance());
Charset charset = null;
// File f = new File(filePath);
try {
charset = detector.detectCodepage(file.toURL());
} catch (Exception e) {
e.printStackTrace();
}
if (charset != null) {
fileCharacterEnding = charset.name();
}
return fileCharacterEnding;
}
public static void main(String[] args) {
System.out.println(getFileEncoding("E:/code/myec_cyh/pingan_dmz/test.java"));
System.out.println(getFileEncoding("E:/code/myec_cyh/pingan_dmz/src/cn/com/benyoyo/manage/core/DBUtil/PublicDao.java"));
}
}
转码
package change;
import java.io.File;
import java.util.Collection;
import org.apache.commons.io.FileUtils;
/**
*
* @author sgy
*
*如果项目中同时存在有gb2312/gbk和utf8的文件,则将gb2312/gbk的转为utf8
*/
public class ChangeEncoding {
public static void main(String[] args) throws Exception {
//GBK编码格式源码路径
String srcDir = "E:\pingan_dmz";
//转为UTF-8编码格式源码路径
String targetDirectory = "E:\code\myec_cyh\pingan_dmz";
//获取所有java文件
Collection<File> srcDirFileCol = FileUtils.listFiles(new File(srcDir), new String[]{"java"}, true);
for (File srcFile : srcDirFileCol) {
String srcFilePath = srcFile.getAbsolutePath();
//当为GB2312时才会转换为urf8
String srcEncoding = EncodingUtil.getFileEncoding(srcFilePath);
System.out.print(srcFile.getName()+":"+srcEncoding+" ");
if ("GB2312" == srcEncoding || "GBK" == srcEncoding) {
System.out.println();
System.out.print(srcFile.getAbsolutePath());
//UTF8格式文件路径
String targetFilePath = targetDirectory+srcFilePath.substring(srcDir.length());
//使用GBK读取数据,然后用UTF-8写入数据
FileUtils.writeLines(new File(targetFilePath), "UTF-8", FileUtils.readLines( srcFile, srcEncoding));
}
}
}
}