文本文档不包含文档的编码信息,然而有些时候,我们必须要获得某个文件的编码,这时候怎么办?
1、自己造轮子,通过对各种编码的判断,确定其所属编码。
这种方式难度较大,而且对编码知识的要求较高。
2、借助其他已经存在的工具。
在网上找到了这个东西:cpdetector。看了下他自己的介绍,感觉其初衷是为抓取html而不能确定其编码而写的,里面有的方法可以直接通过传入url的方式确定其编码。
下面是个通俗的例子:
package encoding;
import info.monitorenter.cpdetector.io.ASCIIDetector;
import info.monitorenter.cpdetector.io.ByteOrderMarkDetector;
import info.monitorenter.cpdetector.io.CodepageDetectorProxy;
import info.monitorenter.cpdetector.io.UnicodeDetector;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
public class CPDetectorTest {
public static void main(String[] args) {
System.out.println(getEncoding(new File("c:/test.txt")));
}
public static String getEncoding(File document) {
CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();
detector.add(new ByteOrderMarkDetector());
detector.add(ASCIIDetector.getInstance());
detector.add(UnicodeDetector.getInstance());
boolean ret = false;
java.nio.charset.Charset charset = null;
try {
charset = detector.detectCodepage(document.toURL());
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
return charset.toString();
}
}
注意其中的这三行:
detector.add(new ByteOrderMarkDetector());
detector.add(ASCIIDetector.getInstance());
detector.add(UnicodeDetector.getInstance());
这是加载其内置的检测器,通过名字可以看出来其所能检测的字符集。
同时,上面的代码不能检测出gb2312等编码,没仔细找到底有没有gb2312等的检测器。
如果不能检测出的话,会返回一个void。
分享到:
相关推荐
使用第三方库cpdetector来判断文件的编码方式,解决获取文件乱码问题,支持文件和文件流的方式,检测文件内容原始编码格式,转化对应的编码进行解码等等。
java判断文件编码格式 三方工具包 cpdetector_1.0.10.jar
文本(文件+网页)编码检测java library, cpdetector_1.0.10. 关于java中GBK与UTF-8编码的转换 及 利用 cpdetector开源框架检测编码的方法参看: https://blog.csdn.net/jhsword/article/details/93618735
判断文件编码格式(支持zip),所需jar包 antlr-1.0.jar,cpdetector-1.08.jar,jchadet-1.0.jar
做项目时总结的,java程序获取文件编码方式的两种最常用的方式(1.cpdetector第三方jar包,包含源码elipse项目;2.EncodingDetect.java工具类)。
cpdetector java检测文件编码开源jar包
使用cpdetector 三方库读取文件编码。 jar包和事例代码都有。
Java cpdetector获取文件编码格式所需Jar包, 请参照博客进行配置 https://blog.csdn.net/xll_csdn/article/details/109079207
cpdetector自动识别网页文件编码
判断编码格式.rar antlr.jar chardet.jar cpdetector_1.0.5.jar
它的类库很小,只有500K左右,利用该类库判定文本文件的代码如下(由于cpdetector的算法使用概率统计,所以结果并不是100%准确的,但是是迄今为止我见过
描述:此工具是用来获取某个目录下的文本文件编码.它依赖于java,在命令下运行....这工具是基于cpdetector项目,它检查文件的编码可能不完全正确,但非常准确.如文本都是纯字母,可能都判为utf-8.一定要看readme.txt哦
mvn install:install-file -DgroupId=info.monitorenter -DartifactId=cpdetector -Dversion=1.0.10 -Dpackaging=jar -Dfile=/jar文件所在的路径/cpdetector_1.0.10.jar
解析文档编码jar包 解析文档编码jar包 解析文档编码jar包
解析网页的编码,通过读取文件流来判断。chardet.jar,cpdetector_1.0.7.jar
cpdetector jar包 cpdetector jar包 cpdetector jar包
cpdetector 自动获取文本文件编码 使用方法:CPDetector.getFileEncode(filePath)
通用的文件字符编码集判断需要借助第三方包cpdetector.jar 使用Cpdetector jar包检测文件编码需要依赖antlr-2.7.7.jar、chardet-1.0.jar、jargs-1.0.jar三个jar包 本下载资源一站式全包含,并附带亲测有效的片段...
主要用于文本、网页的字符编码检测。 共有3个jar包: antlr-2.7.4.jar chardet-1.0.jar cpdetector_1.0.8.jar
cpdetector_1.0.10.jar,chardet.jar,antlr-2.7.7.jar三个jar,主要用于文件编码识别