黑马程序员技术交流社区

标题: java读取txt文件乱码 [打印本页]

作者: adamjy    时间: 2014-4-7 10:05
标题: java读取txt文件乱码
       Java字符流读取文件的时候如果不指定编码方式,就会以系统默认的编码方式来读取。但txt文件,在读取之前我是不知道他是什么编码形式的,所以我也不能事先在代码中加入解码的参数。有什么方式可以对不管是gbk还是utf-8或是Unicode都可以正确读取的吗?
作者: zhangbingyuan    时间: 2014-4-7 10:52
你可以通过判断读取到txt文件的字节流中的字节的编码格式来自动判断文件的编码格式:
private String codetype(byte[] head) {    //参数是txt文件的字节数组
    byte[] codehead = new byte[4];  
    // 截取数组  
    System.arraycopy(head, 0, codehead, 0, 4);  
    String code = "";  
    if(head[0] == -1 && head[1] == -2) {  
        code = "UTF-16";  
    }  
    else if(head[0] == -2 && head[1] == -1) {  
        code = "Unicode";  
    }  
    else if(head[0] == -17 && head[1] == -69 && head[2] == -65)  
        code = "UTF-8";  
    else {  
        code = "gb2312";  
    }  
    return code;  
}  

然后你再根据获取到的编码格式,将输出流的编码格式设置成对应的格式就行了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2