一段检测字节数组的编码方式的代码。

从代码看,是基于频率分析,还是比较准确的。
测试代码如下:
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;

public class Test {
  public static void main(String[] args) throws UnsupportedEncodingException, MalformedURLException {
    BytesEncodingDetect s = new BytesEncodingDetect();
    String str = "??¤¤¤å";
    System.out.println(BytesEncodingDetect.nicename[s.detectEncoding(str.getBytes("ISO-8859-1"))]);
    System.out.println(new String(str.getBytes("ISO-8859-1"), "BIG5"));
    System.out.println(BytesEncodingDetect.nicename[s.detectEncoding("Java世纪网".getBytes())]);
    System.out.println(BytesEncodingDetect.nicename[s.detectEncoding(new URL("http://www.java2000.net"))]);
    System.out.println(BytesEncodingDetect.nicename[s.detectEncoding(new File("src/Test.java"))]);
  }
}
输出结果
Big5
??中文
GB-2312
UTF-8
UTF-8
类的源代码,太大了,各位自己下载吧
BytesEncodingDetect.java (155896)
BytesEncodingDetect.java
快乐渡过每一天,减肥坚持每一天