Android打开Txt中文乱码的解决方案

来源:互联网 发布:mac双系统恢复单系统 编辑:程序博客网 时间:2024/06/06 17:35

原理是找到文档的前三个字节并自动判断文档类型,然后进行转码操作。
原文:
http://blog.csdn.net/handsomedylan/article/details/6138400
亲测可用。

public String convertCodeAndGetText(String str_filepath) {// 转码        File file = new File(str_filepath);        BufferedReader reader;        String text = "";        try {                // FileReader f_reader = new FileReader(file);                // BufferedReader reader = new BufferedReader(f_reader);                FileInputStream fis = new FileInputStream(file);                BufferedInputStream in = new BufferedInputStream(fis);                in.mark(4);                byte[] first3bytes = new byte[3];                in.read(first3bytes);//找到文档的前三个字节并自动判断文档类型。                in.reset();                if (first3bytes[0] == (byte) 0xEF && first3bytes[1] == (byte) 0xBB                                && first3bytes[2] == (byte) 0xBF) {// utf-8                        reader = new BufferedReader(new InputStreamReader(in, "utf-8"));                } else if (first3bytes[0] == (byte) 0xFF                                && first3bytes[1] == (byte) 0xFE) {                        reader = new BufferedReader(                                        new InputStreamReader(in, "unicode"));                } else if (first3bytes[0] == (byte) 0xFE                                && first3bytes[1] == (byte) 0xFF) {                        reader = new BufferedReader(new InputStreamReader(in,                                        "utf-16be"));                } else if (first3bytes[0] == (byte) 0xFF                                && first3bytes[1] == (byte) 0xFF) {                        reader = new BufferedReader(new InputStreamReader(in,                                        "utf-16le"));                } else {                        reader = new BufferedReader(new InputStreamReader(in, "GBK"));                }                String str = reader.readLine();                while (str != null) {                        text = text + str + "/n";                        str = reader.readLine();                }                reader.close();        } catch (FileNotFoundException e) {                // TODO Auto-generated catch block                e.printStackTrace();        } catch (IOException e) {                e.printStackTrace();        }        return text;}
0 0
原创粉丝点击