怎么使用java判断一个字符串是属于什么编码?

从csv文件获得中文,但是获得的这个中文死活是乱码,不能与数据库中的数据进行比较,现在就想知道这个字段是什么编码格式的,然后将它转换为GBK,不知道各位大神有什么方法不?
前面不用看了哈,那个是背景,关键是怎么判断一个字符串的编码格式?谢谢了,能解决问题,重重的赏哈,嘿嘿

楼上全是傻X, 这样没有的,使用开源组件吧detector.jar

用法很简单

/*------------------------------------------------------------------------  
  detector是探测器,它把探测任务交给具体的探测实现类的实例完成。  
  cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法  
  加进来,如ParsingDetector、 JChardetFacade、ASCIIDetector、UnicodeDetector。    
  detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的  
  字符集编码。  
--------------------------------------------------------------------------*/  
CodepageDetectorProxy detector =   CodepageDetectorProxy.getInstance();   
/*-------------------------------------------------------------------------  
  ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于  
  指示是否显示探测过程的详细信息,为false不显示。  
---------------------------------------------------------------------------*/  
detector.add(new ParsingDetector(false));    
/*--------------------------------------------------------------------------  
  JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码  
  测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以  
  再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。  
---------------------------------------------------------------------------*/    
detector.add(JChardetFacade.getInstance());   
//ASCIIDetector用于ASCII编码测定   
detector.add(ASCIIDetector.getInstance());   
//UnicodeDetector用于Unicode家族编码的测定   
detector.add(UnicodeDetector.getInstance());   
java.nio.charset.Charset charset = null;   
File f=new File("E://specialCar//test.csv");   
try {   
      charset = detector.detectCodepage(new BufferedInputStream(new FileInputStream(f)),100);   
} catch (Exception ex) {ex.printStackTrace();}   
if(charset!=null){   
     System.out.println(f.getName()+"编码是:"+charset.name());   
}else{  
    System.out.println(f.getName()+"未知");  
}


采纳哈

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-27
//判断当前字符串的编码格式
if(destination.equals(new String(destination.getBytes("iso8859-1"), "iso8859-1")))
{
  destination=new String(destination.getBytes("iso8859-1"),"utf-8");
}本回答被网友采纳
第2个回答  2014-08-27
第3个回答  2014-08-27
当前jdk没有专门的方法,
我是这样判断处理的,比较笨拙,需要多次判断,关键部分如下
if(str.equals(new String(srt.getBytes("iso8859-1"), "iso8859-1"))) //判断
{
str=new String(destination.getBytes("iso8859-1"),"utf-8"); //转成要求的编码
}追问

这样,那不是要每一种编码都要判断一下?

追答

我是那么处理的,把常用的都判断了的。
你可以抽象一下,弄个专门的方法出来。

第4个回答  2014-08-27
相似回答