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

从csv文件获得中文,但是获得的这个中文死活是乱码,不能与数据库中的数据进行比较,现在就想知道这个字段是什么编码格式的,然后将它转换为GBK,不知道各位大神有什么方法不?... 从csv文件获得中文,但是获得的这个中文死活是乱码,不能与数据库中的数据进行比较,现在就想知道这个字段是什么编码格式的,然后将它转换为GBK,不知道各位大神有什么方法不?
前面不用看了哈,那个是背景,关键是怎么判断一个字符串的编码格式?谢谢了,能解决问题,重重的赏哈,嘿嘿
展开
 我来答
QQMSD8
推荐于2016-09-03 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部

楼上全是傻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()+"未知");  
}


采纳哈

7764sky
2014-08-27 · TA获得超过2616个赞
知道大有可为答主
回答量:1245
采纳率:0%
帮助的人:1396万
展开全部
//判断当前字符串的编码格式
if(destination.equals(new String(destination.getBytes("iso8859-1"), "iso8859-1")))
{
  destination=new String(destination.getBytes("iso8859-1"),"utf-8");
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友eeda9a2
2014-08-27
知道答主
回答量:35
采纳率:0%
帮助的人:16.6万
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
唐四海RK
2014-08-27 · TA获得超过1498个赞
知道小有建树答主
回答量:269
采纳率:0%
帮助的人:190万
展开全部
当前jdk没有专门的方法,
我是这样判断处理的,比较笨拙,需要多次判断,关键部分如下
if(str.equals(new String(srt.getBytes("iso8859-1"), "iso8859-1"))) //判断
{
str=new String(destination.getBytes("iso8859-1"),"utf-8"); //转成要求的编码
}
追问
这样,那不是要每一种编码都要判断一下?
追答
我是那么处理的,把常用的都判断了的。
你可以抽象一下,弄个专门的方法出来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
261667318
2014-08-27 · TA获得超过898个赞
知道小有建树答主
回答量:680
采纳率:100%
帮助的人:631万
追问
这个方法太伤身体了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式