日期:2014-05-18  浏览次数:20786 次

如何自动识别文件编码是用UTF-8或者GBK或其他字符级编码保存的?
如题,我知道ASCII码文件前无前缀字符,UTF-8的文本文件前会有EFBBBF三个字节。Unicode文件前会FFFE两个字节,Unicode big endian文件前会有FEFF00三个字节,但是具体怎么样判断我就不知道了..
有没有哪个高手帮帮忙,谢谢谢谢.....
并且我现在可以得到文件的byte[]数组..但是我直接输出byte[0],byte[1]这样好象是不行的饿。..

------解决方案--------------------
byte [] buff = item.get();//把字符变成byte
if (buff[0]==-17 && buff[1]==-69 && buff[2]==-65){
this.str = new String(buff,"utf-8");//utf-8
}else if(buff[0]==-1 && buff[1]==-2){
this.str = new String(buff,"unicode");//unicode
}else if(buff[0]==-2 && buff[1]==-1){
this.str = new String(buff,"unicode big endian");//unicode big endian
}else{
this.str = new String(buff,"big5");
}

------解决方案--------------------
用头二个字节来判断
------解决方案--------------------
sorry 发错了一个链接 

讨论继续
------解决方案--------------------
我这里有一段检测编码类型的代码,成功率很高! http://www.java2000.net/viewthread.jsp?tid=1679