Android工具之判断文件的编码

来源:互联网 发布:惠州淘宝培训班多少钱 编辑:程序博客网 时间:2024/06/10 20:48
/** * 判断文件编码 * @param file 文件 * @return 编码:GBK,UTF-8,UTF-16LE */public String getCharset(File file) {    String charset = "GBK";    byte[] first3Bytes = new byte[3];    try {        boolean checked = false;        BufferedInputStream bis = new BufferedInputStream(                new FileInputStream(file));        bis.mark(0);        int read = bis.read(first3Bytes, 0, 3);        if (read == -1)            return charset;        if (first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE) {            charset = "UTF-16LE";            checked = true;        } else if (first3Bytes[0] == (byte) 0xFE                && first3Bytes[1] == (byte) 0xFF) {            charset = "UTF-16BE";            checked = true;        } else if (first3Bytes[0] == (byte) 0xEF                && first3Bytes[1] == (byte) 0xBB                && first3Bytes[2] == (byte) 0xBF) {            charset = "UTF-8";            checked = true;        }        bis.reset();        if (!checked) {            int loc = 0;            while ((read = bis.read()) != -1) {                loc++;                if (read >= 0xF0)                    break;                if (0x80 <= read && read <= 0xBF)                    break;                if (0xC0 <= read && read <= 0xDF) {                    read = bis.read();                    if (0x80 <= read && read <= 0xBF)                        continue;                    else                        break;                } else if (0xE0 <= read && read <= 0xEF) {                    read = bis.read();                    if (0x80 <= read && read <= 0xBF) {                        read = bis.read();                        if (0x80 <= read && read <= 0xBF) {                            charset = "UTF-8";                            break;                        } else                            break;                    } else                        break;                }            }        }        bis.close();    } catch (Exception e) {        e.printStackTrace();    }    return charset;}
原创粉丝点击