java 怎么判断编码是utf-8 还是gbk

2024-11-17 03:42:39
推荐回答(3个)
回答1:

你是要判断字符还是判断文件的编码,若是字符:
String str="123456";
String type = "utf-8"; //更换这里进行其他编码判断
try {
if (str.equals(new String(str.getBytes(type ), type ))) {
return type;
}
} catch (Exception e) {

}
如果是文件,麻烦一些,可以使用一个开源项目cpdetector,这个我也没用过,你自己查一下吧

回答2:

如果实在eclipse或myeclipse中打开的,可以直接查看代码的编码方式

回答3:

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

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

  • File file = new File(path);  
    InputStream in= new java.io.FileInputStream(file);  
    byte[] b = new byte[3];  
    in.read(b);  
    in.close();  
    if (b[0] == -17 && b[1] == -69 && b[2] == -65)  
        System.out.println(file.getName() + ":编码为UTF-8");  
    else  
        System.out.println(file.getName() + ":可能是GBK,也可能是其他编码");