自己写了一个(第一个),然后客户提供了一个,均分享。
public String GetCharset(File file) {
String charset = "SJIS";
byte[] first3Bytes = new byte[3];
try {
boolean checked = false;
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(file));
bis.mark(0);
int read = bis.read(first3Bytes, 0, 3);
if (read == -1)
return charset;
if (first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE) {
charset = "UTF-16LE";
checked = true;
} else if (first3Bytes[0] == (byte) 0xFE
&& first3Bytes[1] == (byte) 0xFF) {
charset = "UTF-16BE";
checked = true;
} else if (first3Bytes[0] == (byte) 0xEF
&& first3Bytes[1] == (byte) 0xBB
&& first3Bytes[2] == (byte) 0xBF) {
charset = "UTF-8";
checked = true;
}
bis.reset();
if (!checked) {
int loc = 0;
while ((read = bis.read()) != -1) {
loc++;
if (read >= 0xF0)
break;
if (0x80 <= read && read <= 0xBF)
break;
if (0xC0 <= read && read <= 0xDF) {
read = bis.read();
if (0x80 <= read && read <= 0xBF)
continue;
else
break;
} else if (0xE0 <= read && read <= 0xEF) {
read = bis.read();
if (0x80 <= read && read <= 0xBF) {
read = bis.read();
if (0x80 <= read && read <= 0xBF) {
charset = "UTF-8";
break;
} else
break;
} else
break;
}
}
}
bis.close();
} catch (Exception e) {
e.printStackTrace();
}
return charset;
}
第二个:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import org.mozilla.universalchardet.UniversalDetector;
public class EncodingTest {
public static void main(String[] args) throws UnsupportedEncodingException {
String sourceFilename = "source.txt";
FileInputStream fis= null;
try {
fis = new FileInputStream(sourceFilename);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
return;
}
UniversalDetector detector = new UniversalDetector(null);
try {
while (true) {
byte[] bytes = new byte[1024];
int nread;
nread = fis.read(bytes);
if(nread <= 0){
break;
}
detector.handleData(bytes, 0, nread);
if(detector.isDone() == true){
break;
}
}
} catch (IOException e) {
e.printStackTrace();
return;
}
detector.dataEnd();
if(fis != null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
return;
}
}
String encoding = detector.getDetectedCharset();
System.out.println("Encoding = " + encoding);
}
}
分享到:
相关推荐
这种方法可能会产生乱码,但可以通过捕获`CharacterCodingException`来识别错误的编码。 ```java for (String encoding : possibleEncodings) { try (BufferedReader reader = new BufferedReader(new ...
本文实例讲述了C#简单判断字符编码的方法。分享给大家供大家参考,具体如下: public static string GetText(byte[] buff) { string strReslut = string.Empty; if (buff.Length > 3) { if (buff[0] == 239 && ...
根据给定文件的信息,我们可以总结出以下关于“判断字符编码格式代码”的相关知识点: ### 一、背景介绍 在计算机科学领域,字符编码是将文本转换为数字表示的方法,以便于计算机存储和处理。常见的字符编码包括...
Android 读取中文 txt 文件时经常会出现乱码问题,主要是因为文档的编码格式不确定,从而导致读取时出现乱码。为了解决这个问题,我们可以通过自动判断文档类型并转码来解决乱码问题。 在 Java 中,我们可以使用 ...
在实际开发中,应根据项目的具体需求选择合适的方法,确保能正确处理各种编码格式的文件,避免因为编码问题导致的乱码现象。同时,使用开源库可以提高代码的健壮性和兼容性,减少手动编码的复杂性。
在JavaScript中,判断一个字符串是否属于GBK编码是一个常见的需求,特别是在处理中文字符集时。...总的来说,理解和判断GBK编码在JavaScript中的应用是处理中文字符集问题的重要一环,尤其在网络传输和多语言环境下。
### Java判断文件编码的方法 在Java开发中,经常会遇到需要处理不同编码格式的文件的情况。为了确保程序能够正确解析文件内容,必须先判断文件的编码格式。本文将详细介绍如何使用Java来判断文件是否为UTF-8或GBK...
在定义了函数后,需要定义要进行判断编码的字符串,然后通过调用is_gb2312函数来判断字符串的编码。如果函数返回true,那么字符串的编码是gb2312,否则是utf-8。 在实际应用中,可以在网页上输出字符串的编码结果。...
总之,Java提供了一些库和工具来帮助开发者识别文件的编码,通过引入`cpdetector`和`chardet`库,结合`FileCharsetDetector.java`中的方法,可以有效地解决文件编码的判断问题。理解这些工具的工作原理,以及如何在...
自动判断URL编码的方法。URL中包含编码的中文的时候,程序获取queryString需要根据url的不同编码,采用不同的解码方式,RequestQueryString方法能够自动识别url是用UTF-8编码还是GB2312编码,从而自动获取争取的值。...
了解并掌握文本文件的编码识别,对于进行跨平台的文本处理、国际化和本地化工作尤其重要,可以避免出现乱码问题,保证数据的准确性和一致性。在实际开发中,我们应该养成良好的编码习惯,尽量使用标准的UTF-8编码,...
在C++编程中,乱码问题通常涉及到字符编码,如ASCII、UTF-8、GBK等。JSON数据通常以UTF-8编码存储,因为它能表示Unicode字符集中的所有字符,是网络通信的标准编码。然而,如果你的程序在处理JSON数据时,没有正确地...
当处理包含中文字符的CSV文件时,可能会遇到乱码问题,这通常与文件编码设置有关。本篇文章将详细探讨如何在Java中解析CSV文件,并解决中文乱码的问题。 首先,我们需要了解如何使用Java的标准库`java.io`和`java....
然而,在处理中文字符时,Ajax请求可能会遇到乱码问题,这主要是由于编码格式不一致或者处理不当导致的。本文将深入探讨Ajax中文乱码问题的成因,并提供一系列解决方案。 **一、问题原因** 1. **编码格式不一致**...
通用的文件字符编码集判断需要借助第三方包cpdetector.jar 使用Cpdetector jar包检测文件编码需要依赖antlr-2.7.7.jar、chardet-1.0.jar、jargs-1.0.jar三个jar包 本下载资源一站式全包含,并附带亲测有效的片段...
在Java编程中,判断文件或文本流的编码是处理文本数据时的重要步骤,尤其是在处理包含多种语言或特殊字符的文件时。以下将详细介绍如何在Java中进行文件编码的判断。 首先,基本的判断方法是通过读取文件的前三个...
总的来说,理解和处理中文乱码问题需要对字符编码有深入的理解,以及对S22.Imap库的熟悉。通过适当地修改源码,开发者能够克服这个障碍,使得S22.Imap能够更准确地处理含有中文字符的邮件,从而提升用户体验。
### Java程序判断文件编码的类型 #### 知识点概览 ...正确识别文件编码对于避免乱码问题非常重要。通过以上方法,我们可以有效地判断文件的编码类型,并据此进行相应的编码转换操作,以确保文本数据的正确处理。
通过以上步骤,我们可以实现一个相对完整的读取中文TXT文件的解决方案,即使文件编码未知,也能自动判断并转换,避免乱码问题。在实际开发中,建议结合具体需求选择合适的方法,确保代码的稳定性和效率。 当然,...
在项目部署过程中,如果出现乱码问题,首先需要判断是否为编码问题导致。在本次案例中,系统在升级过程中提示升级失败,并初步判断为编码问题。为了验证这一猜想,可以使用Winscp等工具连接到目标服务器,查看指定...