java使用jchardet检测文本文件(字节流)的编码方式
有时需要InputStreamReader(InputStream in, Charset cs)这个构造来处理字符流。然而Charset不一定知道。这个时候就需要检测编码方式了。jchardet是firefox使用的字节流编码检测算法的java开源实现,协议为MPL(Mozilla Public License),对商业友好。下载源代码后发现示例并不怎么好使用,于是封装了一下。下面就封装类和使用Demo。
CharsetDetector 这个封装了内部实现,用户直接new这个类就可以检测字节流编码
?
import java.io.IOException;import java.net.URL;public class Demo{ public static void main(String[] args)throws IOException { CharsetDetector charDect = new CharsetDetector(); URL url = new URL("http://www.qq.com/"); String[] probableSet = charDect.detectChineseCharset(url.openStream()); for (String charset : probableSet) { System.out.println(charset); } }}
?
附件为封装后的jar包
如果编码选择是 Unicode ,则检测的结果是 windows-1252