输入文件或文件路径,输出编码格式 package net.vicp.fyhui.van.util;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io
package net.vicp.fyhui.van.util; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; public class CodeType { public CodeType() { } /** * 判断文件的编码格式,有中文的情况很准确,只有英文时,会判断为UTF-8 * @param object为File或String型 * @return * @throws IOException * @throws FileNotFoundException */ public static String whichEncoding(Object object) throws IOException, FileNotFoundException{ long sizeGBK,sizeUTF8; String encoding = null; InputStreamReader readGBK = null; InputStreamReader readUTF8 = null; if(object instanceof File){ readGBK = new InputStreamReader(new FileInputStream((File)object), "GBK"); readUTF8 = new InputStreamReader(new FileInputStream((File)object), "UTF-8"); }else if(object instanceof String){ readGBK = new InputStreamReader(new FileInputStream((String)object), "GBK"); readUTF8 = new InputStreamReader(new FileInputStream((String)object), "UTF-8"); } BufferedReader bReaderGBK = new BufferedReader(readGBK); BufferedReader bReaderUTF8 = new BufferedReader(readUTF8); String lineGBK; String lineUTF8; String sGBK = ""; String sUTF8 = ""; while(((lineGBK = bReaderGBK.readLine()) != null) && ((lineUTF8 = bReaderUTF8.readLine()) != null)){ //同步读取每一行 sGBK = sGBK+lineGBK; //取出每一行,组成字符串 sUTF8 = sUTF8+lineUTF8; //取出每一行,组成字符串 if(sGBK.length()==sUTF8.length()){ if(sGBK.length()>2 && sUTF8.length()>2){ if(!sGBK.substring(3).equals(sUTF8.substring(3))){ break; } } } } String tmpEncoding = sGBK.length() < sUTF8.length() ? "GBK" : "UTF-8" ; //只有英文时,会判断为UTF-8 // String tmpEncoding = sGBK.length() > sUTF8.length() ? "UTF-8" : "GBK" ; //只有英文时,会判断为GBK // System.out.println("Encoding ==> " + tmpEncoding); return tmpEncoding; } }