利用java判断文件的编码方法

在程序中,文本文件经常用来存储标准的ASCII码文本,比如英文、加减乘除等号这些运算符号。文本文件也可能用于存储一些其他非ASCII字符,如基于 GBK的简体中文,基于BIG5的繁体中文等等。在存储这些字符时需要正确指定文件的编码格式;而在读取这些文本文件时,有时候就需要自动判定文件的编码格式。 

按照给定的字符集存储文本文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码的格式。其实,如果项目运行的平台就是中文操作系统,如果这些文本文件在项目内产生,即开发人员可以控制文本的编码格式,只要判定两种常见的编码就可以了:GBK和UTF-8。由于中文Windows默认的编码是GBK,所以一般只要判定UTF-8编码格式。 

对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65,所以,判定是否是UTF-8编码格式的代码片段如下: 

测试文件编码是否为UTF-8

InputStream is = new FileInputStream(file);

    byte[] b = new byte[3];
    is.read(b);
    is.close();
    String tmpEncoding;
    if (b[0] == -17 && b[1] == -69 && b[2] == -65) {
      tmpEncoding = "utf8";
    } else {
      tmpEncoding = "gbk";
    }

你可能感兴趣的:(java,编码,文件,gbk,utf8)