一、按不同编码方式进行试转换,比较转换后与转换前是否相同:
// 识别字符串编码
public static String getEncoding(String str) {
if (str == null || str.trim().length() < 1)
return "";
// 常用字符编码数组
String[] encodes = new String[] { "GBK", "ISO-8859-1", "GB2312",
"GB18030", "UTF-8" };
for (String encode : encodes) {
try {
// 匹配字符编码
if (str.equals(new String(str.getBytes(), encode))) {
// 返回编码名称
return encode;
} else {
continue;
}
} catch (Exception er) {
}
}
return "";
}
二、分析byte[]来判断规律。
缺点:有时,个别本地编码字节在utf8中也会出现,导致出错,需要分析。
public static boolean isValidUtf8(byte[] b,int aMaxCount){
int lLen=b.length,lCharCount=0;
for(int i=0;i < lLen; i++){
byte lByte=b[i++];//to fast operation, ++ now, ready for the following for(;;)
if(lByte>=0) continue;//>=0 is normal ascii
if(lByte<(byte)0xc0 || lByte>(byte)0xfd) return false;
int lCount=lByte>(byte)0xfc?5:lByte>(byte)0xf8? 4 :lByte>(byte)0xf0?3:lByte>(byte)0xe0?2:1;
if(i+lCount>lLen) return false;
for(int j=0;j=(byte)0xc0) return false;
}
return true;
}
相应地,一个使用上述方法的例子如下:
public static String getUrlParam(String aStr,String aDefaultCharset) throws UnsupportedEncodingException{
if(aStr==null) return null;
byte[] lBytes=aStr.getBytes("ISO-8859-1");
return new String(lBytes,StringUtil.isValidUtf8(lBytes)?"utf8":aDefaultCharset);
}
三:使用jchardet组件:
jchardet是mozilla自动字符集探测算法代码的java移植,其源代码可以从sourceforge下载。这个算法的最初作者是frank Tang,C++源代码在
http://www.infomall.cn/cgi-bin/mallgate/20040514/
http://lxr.mozilla.org/mozilla/source/intl/chardet/,可以从
http://www.infomall.cn/cgi-bin/mallgate/20040514/
http://www.mozilla.org/projects/intl/chardet.html
得到更多关于这个算法的信息。
分享到:
相关推荐
字符编码检测和转换 附件中:FileEncodeDetector.java 此文件可以检测指定文件的编码格式 public static String getFileEncode(File file) {...} 附件中:FileCharsetConverter.java 此文件可以实现两个编码的相互...
首先,Java标准库并没有提供一个直接的API来检测字符串的编码。通常,我们需要通过一些间接的方式来推测编码。一种常见方法是尝试用不同的编码方式解析字符串,观察是否出现乱码。以下是一个简单的示例: ```java ...
通用的文件字符编码集判断需要借助第三方包cpdetector.jar 使用Cpdetector jar包检测文件编码需要依赖antlr-2.7.7.jar、chardet-1.0.jar、jargs-1.0.jar三个jar包 本下载资源一站式全包含,并附带亲测有效的片段...
在Java编程语言中,字符编码是一个至关重要的概念,它涉及到数据的存储、处理和传输。字符编码决定了如何将字符(如字母、数字、符号)转换为数字表示,以便计算机能够理解并操作它们。本篇文章将深入探讨Java中的...
"encoding-filter.jar"可能是一个实现了字符编码过滤器功能的Java类库,它可以被添加到J2EE应用中,自动处理字符编码转换。而"使用方法.txt"文件则可能提供了关于如何配置和使用这个过滤器的详细步骤和示例代码,以...
Java字符编码转换工具是编程中常见的一种实用程序,主要用于处理不同字符编码间的转换问题。在计算机世界里,字符编码是用来表示文本的各种方式,常见的有ASCII、GBK、UTF-8等。不同的编码方式适用于不同的场景,...
在Java编程语言中,处理字符串是非常常见的操作,尤其是在涉及到文本分析和处理的场景。本文将深入探讨如何在Java中进行中文...在Java中处理字符串,特别是涉及到特殊字符集如中文时,对字符编码的理解是必不可少的。
标题中的“JAVA 转换字符编码工具”指的是在Java编程语言中处理字符编码的工具或方法。在Java中,字符编码是至关重要的,因为不同的系统和文件可能使用不同的字符编码标准,例如ASCII、UTF-8、GBK等。转换字符编码...
在Java编程中,正确地处理文件的字符集编码至关重要,特别是在读取或写入含有非ASCII字符(如中文、日文、韩文等)的文件时。`cpdetector`是Java中一个常用的库,用于自动检测文件的字符集编码。这个库能够帮助...
在Java编程中,判断文件编码格式是一项常见的任务,特别是在处理包含多国语言或者用户自定义内容的文件时。本文将探讨如何使用Java进行文件编码格式的识别,主要介绍两种方法:一种是简单的UTF-8判断,另一种是使用...
通过上述分析,我们可以看到Java程序在编写、编译和运行过程中涉及到了多个字符编码的转换。正确处理这些转换对于确保程序能够正确处理中文字符至关重要。特别是在国际化应用中,理解这些转换机制可以帮助开发者避免...
标题中的“检测字符和网站编码的类”指的是一个专门用于识别和处理字符串或网页编码的程序类。在计算机科学中,字符编码是将字符转换为二进制表示的方法,常见的有ASCII、Unicode(UTF-8、UTF-16等)等。这个类可能...
在“java中用过滤器解决字符编码问题.doc”的文件中,我们可以预期会找到关于如何在Java web应用中利用过滤器(Filter)解决字符编码问题的详细步骤。过滤器是Servlet技术的一部分,可以拦截请求和响应,对数据进行...
在Java中,`java.nio.charset.Charset`类用于表示字符编码,但默认情况下,Java文件读取操作通常假设文件为UTF-8编码。对于其他编码,我们需要借助第三方库如`jcconf`或`ICU4J`来检测编码。 ```java import ...
在Java中,`java.nio.charset`包提供了对字符编码的支持,如`Charset`类用于表示字符集,`CharsetDecoder`和`CharsetEncoder`用于解码和编码。然而,要准确地判断一个文件的编码,通常需要更复杂的策略,包括但不...
`chardet`库是基于Java的字符集检测工具,它可以分析字节序列并猜测其对应的字符编码。要使用`chardet`,你需要先将其导入到项目中。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml <groupId>...
Java自动识别文件字符编码工具类 参考博客 https://blog.csdn.net/superbeyone/article/details/103036914 使用方式: String encode = EncodingDetect.getFileEncode(geoJsonFile); log.info("系统检测到文件[ {}...