`
yaerfeng1989
  • 浏览: 234012 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java自动根据文件内容的编码来读取避免乱码

阅读更多

 

通过cpdetector这个开源的jar包可以自动判断当前文件的内容编码,从而在读取的时候选择正确的编码读取,避免乱码问题。

 

 原创不易,转载请注明出处:java自动根据文件内容的编码来读取避免乱码

 

测试结果,提供截图:

GBK文件内容

UTF8文件内容

 

运行结果:

 

package com.zuidaima.test;

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;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

public class Main {

	public static String getContent(String path) throws Exception {
		File file = new File(path);
		CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();
		detector.add(new ParsingDetector(false));
		detector.add(JChardetFacade.getInstance());
		detector.add(ASCIIDetector.getInstance());
		detector.add(UnicodeDetector.getInstance());
		java.nio.charset.Charset charset = null;
		try {
			charset = detector.detectCodepage(file.toURI().toURL());
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		String charsetName = null;
		if (charset != null) {
			charsetName = charset.name();
		} else {
			charsetName = "UTF-8";
		}
		BufferedReader reader = new BufferedReader(new InputStreamReader(
				new FileInputStream(file), charsetName));
		String line = null;
		String lines = "";
		while ((line = reader.readLine()) != null) {
			lines += line + "\n";
		}
		reader.close();
		return lines;
	}

	public static void main(String[] args) throws Exception {
		System.out.println(getContent("bin/gbk.txt"));
		System.out.println(getContent("bin/utf8.txt"));
	}
}

 代码下载地址:http://www.zuidaima.com/share/1550463235574784.htm

0
3
分享到:
评论
1 楼 ray_linn 2014-03-10  
Text文件头是可省略的,所有检测都是不靠谱的,只是猜测而已。

相关推荐

    java读写csv文件,中文乱码问题

    - Java库如OpenCSV、Apache Commons CSV或牛顿CSV库提供了方便的方法来处理CSV文件,它们会自动处理编码问题。 - 使用这些库时,需要配置正确的编码。例如,使用Apache Commons CSV: ```java Reader reader = ...

    java读写文件避免中文乱码.docx

    这样,在读取文件时,Java 就会使用 UTF-8 编码来解析文件内容,从而避免中文乱码。 写入文件避免中文乱码 在写入文件时,也需要使用正确的编码方式来保存文件内容。Java 提供了多种方式来写入文件,例如使用 `...

    java 解析csv文件例子,csv文件 中文乱码问题

    对于解析CSV文件,Java社区提供了许多第三方库,如OpenCSV、SuperCSV和Apache Commons CSV等,它们提供了更高级的功能,如自动类型转换、处理复杂格式和避免内存消耗等。例如,使用Apache Commons CSV库读取CSV文件...

    EncodingDetect.java自动获取文件的编码.rar

    EncodingDetect.java,java自动获取文件的编码,智能识别文件编码,支持本地file及指定url的编码识别,支持多达40余种编码的识别,包括最常见的UTF-8,GBK,GB2312,BIG5,UNICODE,ISO8859_1,ASCII等,FileUtil....

    Java读取TXT文本文件乱码解决方案.doc

    本文提供了 Java 读取 TXT 文本文件乱码解决方案,并讨论了 TXT 文件的编码格式和获取编码格式的方法。 知识点: * Java 读取 TXT 文本文件时可能出现乱码的问题 *乱码的问题是由于文件的编码格式引起的 * 使用 ...

    JAVA自动获取文件的编码工具类

    总的来说,`JAVA自动获取文件的编码工具类`是一个实用的辅助工具,可以帮助开发者处理文件编码问题,避免因编码不匹配导致的乱码问题。通过合理使用和集成到项目中,可以提升代码的健壮性和易用性。

    Java自动根据文件内容的编码来读取避免乱码

    通过cpdetector这个开源的jar包可以自动判断当前文件的内容编码,从而在读取的时候选择正确的编码读取,避免乱码问题。  测试结果,提供截图: package com.zuidaima.test; import info.monitorenter....

    Java避免UTF-8的csv文件打开中文出现乱码的方法

    Java避免UTF-8的csv文件打开中文出现...Java避免UTF-8的csv文件打开中文出现乱码的方法是使用UTF-16LE编码格式,并在文件头部输出BOM。同时,需要考虑Excel版本的兼容性问题,以确保csv文件可以正确地被打开和读取。

    java读取文件中文乱码

    在Java编程中,读取包含中文字符的文件时可能会遇到乱码问题,这通常是由于编码格式不匹配导致的。要解决这个问题,我们需要理解文件的原始编码格式,并在Java代码中正确地设置字符集。以下是一些相关的知识点: 1....

    Java判断文件编码格式 - 明明是悟空 - 博客园1

    在实际开发中,应根据项目的具体需求选择合适的方法,确保能正确处理各种编码格式的文件,避免因为编码问题导致的乱码现象。同时,使用开源库可以提高代码的健壮性和兼容性,减少手动编码的复杂性。

    Java读写xml,word,xml文件(防乱码)

    这样可以在读取文件的同时指定正确的字符编码,从而避免乱码问题。 ```java import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import...

    JAVA 解决Properties文件保存中文乱码

    本文将深入探讨如何在Java中解决Properties文件保存和读取中文乱码的挑战。 首先,我们需要理解Java默认使用ISO-8859-1编码来处理Properties文件。由于此编码不支持大部分中文字符,因此在保存或加载包含中文的...

    JAVA获取文件编码格式

    4. **处理结果**:`detectFileEncoding`函数返回的字符串是检测到的文件编码,可以根据这个信息来决定如何读取和处理文件内容。如果返回的是“unknown”,则表示无法确定文件的编码。 通过以上步骤,我们就可以在...

    java 文件编码转换

    在这个类中,开发者可能定义了方法来读取文件,使用`chardet.jar`检测文件的编码,然后将文件内容转换为期望的编码,如UTF-8。Java的`java.nio`包中的`Charset`和`CharsetDecoder`类是进行编码转换的核心工具。通过...

    java压缩zip文件解决中文乱码问题

    总结来说,处理Java中ZIP文件的中文乱码问题,关键在于明确指定字符集,通常是UTF-8,无论是使用Java内置的API还是第三方库。同时,理解文件系统的编码和压缩/解压过程中的字符编码转换也非常重要。通过这种方式,...

    java 读取文件乱码

    例如,要以UTF-8编码读取文件,可以这样创建`Reader`: ```java FileInputStream fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); BufferedReader br = new ...

    解析URL和文件的编码方式

    选择合适的编码方式至关重要,因为它直接影响到文件内容的正确读取和显示。例如,当一个UTF-8编码的文件误用GBK打开时,可能会出现乱码。 在工作中,我们经常遇到处理不同编码格式的问题,尤其是在处理多语言网站或...

    Java实现文件下载并解决中文文件名乱码

    3. **编码转换**:针对不同浏览器对中文支持的不同,需要进行适当的编码转换来避免乱码。 #### 二、代码实现 1. **检测浏览器类型**:根据用户使用的浏览器类型来确定如何处理文件名的编码。 ```java String ...

Global site tag (gtag.js) - Google Analytics