/** * @file CharsetDetectorProxy.java * * @revision: none * * @version 0.0.01 * @author: Zenki (zhajun), zenki2001cn@163.com * @date: 2011-6-22 上午10:06:10 */ package com.easyview.ebook.reader.engine.util.charsetcodec; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; import org.geometerplus.fbreader.library.Book; import com.easyview.ebook.reader.engine.util.Logger; import info.monitorenter.cpdetector.io.ASCIIDetector; import info.monitorenter.cpdetector.io.CodepageDetectorProxy; import info.monitorenter.cpdetector.io.JChardetFacade; import info.monitorenter.cpdetector.io.ParsingDetector; import info.monitorenter.cpdetector.io.UnicodeDetector; public class CharsetDetector2 { static private final String TAG = "CharsetDetector2"; private InputStream mStream; CodepageDetectorProxy mDetector; public CharsetDetector2(Book book) { try { File file = new File(book.File.getPath()); mStream = new BufferedInputStream(new FileInputStream(file)); } catch (IOException e) { e.printStackTrace(); } initDetector(); } public String getDecodeName() { String name = "UTF-8"; Charset charset = null; Logger.eLog(TAG, "getDecodeName start"); try { charset = mDetector.detectCodepage(mStream, 65535); } catch (Exception ex) { ex.printStackTrace(); } if (charset != null) { name = charset.name(); Logger.eLog(TAG, "getDecodeName = " + name); } else { Logger.eLog(TAG, "getDecodeName null"); } return name; } private void initDetector() { mDetector = CodepageDetectorProxy.getInstance(); mDetector.add(new ParsingDetector(true)); mDetector.add(JChardetFacade.getInstance()); mDetector.add(ASCIIDetector.getInstance()); mDetector.add(UnicodeDetector.getInstance()); } }