`
yaerfeng1989
  • 浏览: 227666 次
  • 性别: 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自动根据文件内容的编码来读取避免乱码

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

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

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

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

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

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

    主要介绍了Java避免UTF-8的csv文件打开中文出现乱码的方法,结合实例形式分析了java操作csv文件时使用utf-16le编码与utf8编码相关操作技巧,需要的朋友可以参考下

    获取文件编码格式(纯JAVA代码,绝对对你有用)

    java 识别文件的编码格式 读取文件的编码 utf-8 gbk gb2312 java 编码 java 获取文件编码格式 java 乱码查找

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

    Java 读取 TXT 文本文件时可能会出现乱码问题,这个问题是由于字符集编码不正确引起的。解决方案是使用正确的编码方式读取文本文件。下面是详细的解决方案: 首先,需要了解 TXT 文本文件的编码格式。TXT 文本文件...

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

    解决JAVA读取properties中文乱码问题

    java中文乱码解决问题

    这是因为在编译 Servlet 类或者 JSP 文件时,如果没有使用 -encoding 参数指定 Java 源程序的编码格式,javac 会获取本地操作系统默认采用的字符集,以该字符集将 Java 源程序转换为 Unicode 编码保存到内存中,然后...

    java读取解析DXF文件信息.rar

    java解析DXF文件信息,这里涉及到各种转换字符串编码的操作,解决了解析过程中遇到中文的乱码问题,包括circle,ellipse,line,lwpolyline等,还涉及到从DXF文件中读取一个字符串、判断CIRCLE实体、判断ellipse实体、...

    关于java中的编码转换问题(解决乱码问题)

    “字符与编码”是一个被经常讨论的话题,而时常出现的乱码对于... 而对于JAVA来说,在JSP输出、文件读写、甚至数据库访问等环节上,都有可能出现乱码现象,而之所以会出现乱码,都与编码及转码有着莫大的关系。。。

    读取文件编码工具类

    通过用getJavaEncode获取文件的编码工具类,避免一些乱码错误

    java读写excel包括utf8转码为可识别汉字gbk

    java读写excel包括utf8转码为可识别汉字gbk,jxl方式读取excel,生成一个新的excel

    Java读取word文档内容并输出成网页(含图片,公式)

    本代码实现使用Java程序读取word文档成网页,将word文档按原样在网页输出。项目编码为UTF-8,文件编码也是utf8,再不要说乱码这种骚话了,选择utf8加载项目就不会乱码

    eclipse文件编码设置、转换原理与实用工具

    3.文件编码的自动设别方法与测试示例(自动列出编码、最可能的编码、有多种编码可能的情况下打印用各种编码解码出来的内容以便核对,下载文件中附带乱码的文件例子和正确的读取方法)。 声明: 除了“文件编码的...

    java 逐行读取txt文本如何解决中文乱码

    java读取txt文本中如含有中文,可能会出现乱码,解决方案是: 1.要统一编码,java工程的编码,txt文本编码,java工程中的java文本编码都统一为utf-8; 2.利用 InputStreamReader(new FileInputStream(fileUrl), ...

    java web 开发 unicode 乱码解决方案

    常用java转码方法,以及绕过web服务器二次编码技术。

    Java Web实现文件下载和乱码处理方法

    件上传和下载是web开发中常遇到的问题。今天小编给大家分享下Java Web实现文件下载和乱码处理方法的相关资料,需要的朋友可以参考下

    解析乱码的JAVA程序

    经常在读取数据库或者JSP的时候出现乱码,可能很难猜测乱码是什么编码格式的。把乱码贴到这个程序中点解码,程序会用所有选中的字符集对乱码解码,再重新编码。最终得到一些内容,并显示解开乱码的方案。

    解决GDAL读取SHP中文乱码

    完善说明,通过对网上的东西,东拼西凑的,终于解决了GDAL读取中文的乱码问题,或者是通过设置Gdal.SetConfigOption("SHAPE_ENCODING","CP936")后,能够读取中文,但是还是存在一个BUG,那比较中文是“张三”,读取...

Global site tag (gtag.js) - Google Analytics