antlr/chardet/cpdetector.jar
/** * 利用第三方开源包cpdetector获取文件编码格式. * * @param filePath * @return */ public static String getFileEncode(String filePath) { /** * * 1、cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法加进来,如:ParsingDetector、 JChardetFacade、ASCIIDetector、UnicodeDetector. * 2、detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则. * 3、cpDetector是基于统计学原理的,不保证完全正确. * */ CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance(); detector.add(new ParsingDetector(false)); detector.add(JChardetFacade.getInstance ());// 需要第三方JAR包:antlr.jar、chardet.jar. detector.add(ASCIIDetector.getInstance()); detector.add(UnicodeDetector.getInstance()); Charset charset = null; File file = new File(filePath); try { charset = detector.detectCodepage(file.toURI().toURL()); } catch (Exception e) { log.error(e, e); } String charsetName = Const.GBK; if (charset != null) { if (charset.name().equals("US-ASCII")) { charsetName = Const.ISO_8859_1; } else if (charset.name().startsWith("UTF")) { charsetName = charset.name();// 例如:UTF-8,UTF-16BE. } } return charsetName; }
用户评论