解决android读取中文txt的乱码(自动判断文档类型并转码

来源:互联网 发布:网络推广产品代理 编辑:程序博客网 时间:2024/05/17 00:08

主要是记录下来,方便使用啊

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
原创粉丝点击