从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()+"æªç¥");
}
é纳å
这样,那不是要每一种编码都要判断一下?
追答我是那么处理的,把常用的都判断了的。
你可以抽象一下,弄个专门的方法出来。