`
liss
  • 浏览: 826020 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

利用第三方的Jar包内的类和方法来判别文件编码

阅读更多

今天在论坛里看见了一个人发帖子问,如何查看文件的编码。有一个人回帖推荐了一片文章,我看了一下,觉得挺好的,我把原文的意思取舍了一下,整理成了下面的文章。原文请查看:http://www.iteye.com/topic/108540作者是hdwangyi 。

他在帖子中贴出了一段代码来判断一个文本是UTF-8编码的,思路是读取一个txt文件,截取字符流的前3个字符(即标示位),判断是否与UTF-8的格式的标示位一致。

import java.io.*;

public class TestText {
    public static void main(String args[]){
        File file = new File("C:/1.txt");
        
        try{
            InputStream stream = new FileInputStream(file);
            byte[] byteArray = new byte[3];
            
            stream.read(byteArray);
            stream.close();
            
            if (byteArray[0] == -17 && byteArray[1] ==  -69 && byteArray[2] == -65)
                System.out.println("UTF-8");
            else
                System.out.println("可能是其他的编码");
            
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}

 但显然这种方式有很大的局限性,而且需要对文件编码有着一定的了解。于是作者用到了第三方的jar包cpdetector,下载地址:http://cpdetector.sourceforge.net/如何在Eclipse中导入jar包,请看http://blog.csdn.net/justinavril/archive/2008/08/07/2783182.aspx。这个jar包内的类和方法能够准确判断文件的编码格式。

 

 

import cpdetector.io.*;
import java.io.*;
import java.nio.charset.*;

public class PageCode {
    public static void main(String args[]){
        
        CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();
        detector.add(JChardetFacade.getInstance());
        
        Charset charset = null;
        
        File f = new File("C:/1.txt");  
        
        try {   
            charset = detector.detectCodepage(f.toURL());   
        } 
        catch (Exception e) {
            e.printStackTrace();
        }   
        if(charset!=null){   
            System.out.println(f.getName()+"编码是:"+charset.name());   
        }else  
            System.out.println(f.getName()+"未知");  
    }
}

输出:

 

1.txt编码是:GB2312 

 可以把main函数的相关内容改成一个方法重用,从而达到自由判断文件编码的目的。 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics