Android获取文件的编码

注:本文属于转载
原文链接:https://blog.csdn.net/u013144287/article/details/74455817 遵循 CC 4.0 BY-SA 版权协议

ExchangeUtil.java代码经简单测试可以直接使用,支持的编码格式很多,我试过GB2312、GBK、UTF-8、BIG5等格式能正确获取到

使用方式

public String getJavaEncode(File file) {
     ExchangeUtil s = new ExchangeUtil();
     return ExchangeUtil.javaname[s.detectEncoding(file)];
}

个人使用时对源代码有个小修改,如下

private static final int FILE_BYTES_MAX = 1024 * 1024;

public int detectEncoding(File testfile) {
        FileInputStream chinesefile;
        byte[] rawtext;
        //做个最大值限制,防止内存溢出,但是不知道是否会影响准确性
        int length = (int)testfile.length();
        if(length > FILE_BYTES_MAX) {
            length = FILE_BYTES_MAX;
        }
        rawtext = new byte[length];
        try {
            chinesefile = new FileInputStream(testfile);
            chinesefile.read(rawtext);
            chinesefile.close();
        } catch(Exception e) {
            System.err.println("Error: " + e);
        }
        return detectEncoding(rawtext);
    }

源代码是读取文件的全部字节,这个考虑到文件特别大会有内存问题,所有做了一个最大读取字节的限制。(不知道会不会影响获取编码的准确度,我自己测试的没有影响)

由于代码过长无法直接放代码,所以放到GitHub Android 获取文件的编码,里面有ExchangeUtil.java源码(未修改的)

你可能感兴趣的:(Android获取文件的编码)