文本文档不包含文档的编码信息,然而有些时候,我们必须要获得某个文件的编码,这时候怎么办?
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"不仅可以用于单个文件,也可以用于批量处理多个文件,例如在处理大量未知编码的文本数据时,这个工具可以大大提高工作效率。同时,由于其支持文件流,因此适用于处理大文件,避免一次性...
总的来说,`cpdetector_1.0.10.jar`是Java开发中的一个实用工具,它提供了高效且准确的文件编码检测功能,帮助开发者更好地处理文本数据,避免因编码问题而引发的程序异常。通过理解并熟练使用这类工具,可以提升...
"获取zip文件编码格式 cpdetector.zip" 是一个工具,它能够帮助我们识别ZIP文件内文本文件的编码格式。 这个工具的关键依赖于三个JAR文件:antlr-1.0.jar、cpdetector-1.08.jar和jchardet-1.0.jar。这些库提供了...
"使用cpdetector 三方库读取文件编码"的主题聚焦于如何利用cpdetector这个第三方库来检测和识别不同文件的字符编码。cpdetector是Java编程语言中的一个实用工具,它结合了jchardet库,提供了一种高效、准确的方式来...
在Java编程中,正确识别和处理文件的编码方式至关重要,特别是在处理不同系统间的数据交换或者解析非ASCII字符的文本文件时。本篇文章将详细介绍两种常用的方法来检测Java程序中的文件编码:一是使用`cpdetector`第...
文本(文件+网页)编码检测java library, cpdetector_1.0.10. 关于java中GBK与UTF-8编码的转换 及 利用 cpdetector开源框架检测编码的方法参看: https://blog.csdn.net/jhsword/article/details/93618735
本文将探讨如何使用Java进行文件编码格式的识别,主要介绍两种方法:一种是简单的UTF-8判断,另一种是使用开源库cpdetector。 首先,对于简单的UTF-8编码格式判断,我们可以直接读取文件的前三个字节来确定。UTF-8...
标题中的“判断编码格式.rar”表明这是一个关于识别文件或文本编码类型的工具或程序集合。它包含的三个文件“antlr.jar”,“chardet.jar”,以及“cpdetector_1.0.5.jar”都是与字符编码检测相关的Java库。 1. **...
`cpdetector`提供了多种编码识别算法,可以帮助程序自动识别文件的正确字符集,避免在处理文本时出现乱码问题。 `cpdetector`主要由以下组件组成: 1. **CharsetDetector**:这是核心类,实现了编码检测的主要逻辑...
在Java编程中,判断文件或文本流的编码是处理文本数据时的重要步骤,尤其是在处理包含多种语言或特殊字符的文件时。以下将详细介绍如何在Java中进行文件编码的判断。 首先,基本的判断方法是通过读取文件的前三个...
1. **编码检测**:它提供了多种编码检测器,如ISO-8859-1、UTF-8、GBK等,能够自动检测文本文件的字符编码,这对于处理来自不同来源的数据非常有用。 2. **易用性**:`cpdetector`为Java开发者提供了一个简单易用的...
例如,在爬虫项目中,当抓取的网页编码未知时,可以先利用Chardet进行预判,再用CPDetector进一步确认,从而确保正确解析和处理文本内容,避免乱码问题。同时,ANTLR可以用来解析这些文本中的结构信息,如XML、HTML...
`cpdetector`, `antlr`, 和 `chardet` 是三个与文档编码解析相关的Java库,它们在处理不同编码格式的文件时发挥着关键作用。接下来,我们将深入探讨这三个库以及它们在`jar`包中的应用。 `cpdetector`,全称为...
【标题】"cpdetector_1.0.10自动识别网页文件编码" 是一个软件工具,主要用于检测和识别网页文件的字符编码。这个版本是1.0.10,表明这是一个经过多次迭代优化的成熟软件。 【描述】"cpdetector自动识别网页文件...
接着,如果结果不确定或者需要更高的准确性,可以引入`cpdetector_1.0.7.jar`,利用`ICU4J`和`jChardet`进一步确认编码。在确定了正确的编码后,就可以将文件内容正确地解码为字符串,进而进行后续的处理,如HTML...
在实际开发中,cpdetector 可能会用在各种场景,例如文件读写、数据导入导出、文本处理等,确保程序能够正确解析和处理不同编码的文件。通过理解并熟练使用cpdetector.jar,开发者可以提高工作效率,减少因编码问题...
Java是一种广泛使用的编程语言,尤其在企业级应用和服务器端开发中占据主导地位。在处理文本文件时,正确识别文件的编码方式至关重要...在开发过程中,熟练掌握并利用这些库,可以显著提高处理文本数据的效率和准确性。
描述中的"文件编码的判断"进一步确认了我们的理解,即"cpdetector"可能是一个用于检测文件所使用的字符编码(如ASCII、UTF-8、GBK等)的工具。文件编码对于正确显示非英文字符至关重要,特别是处理中文、日文、韩文...
描述:此工具是用来获取某个目录下的文本文件编码.它依赖于java,在命令下运行....这工具是基于cpdetector项目,它检查文件的编码可能不完全正确,但非常准确.如文本都是纯字母,可能都判为utf-8.一定要看readme.txt哦
例如,如果一个项目需要处理来自不同来源的文本数据,首先使用Chardet.jar检测数据的编码,然后使用ANTLR解析数据的结构,最后利用CPDetector确保在整个处理过程中正确处理了字符编码,从而避免出现乱码问题。...