A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© adamjy 中级黑马   /  2014-4-7 10:05  /  865 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

       Java字符流读取文件的时候如果不指定编码方式,就会以系统默认的编码方式来读取。但txt文件,在读取之前我是不知道他是什么编码形式的,所以我也不能事先在代码中加入解码的参数。有什么方式可以对不管是gbk还是utf-8或是Unicode都可以正确读取的吗?

1 个回复

倒序浏览
你可以通过判断读取到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;  
}  

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

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马