Android实战开发篇 txt文件内容转码,解决乱码问题

Posted 彭老希

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android实战开发篇 txt文件内容转码,解决乱码问题相关的知识,希望对你有一定的参考价值。

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;

/**

 * @author : xiaohu
 * @ClassName : FileTranscodingUtil.java
 * @Function : 文件内容转码工具类
 * @Description :
 * @Idea :
 * {@link  }
 * @Encourage :Do everything you can right now, and then decide.
 * 全力以赴,历而后择。
 */
public class FileTranscodingUtil {
    /**
     * 转换代码并获取文本
     *
     * @param filepath 文件路径
     * @return 返回转码内容
     */
    public static String convertCodeAndGetText(String filepath) {
        File file = new File(filepath);
        BufferedReader reader;
        String text = "";
        try {
            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) {
                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;
                // text = text + str + "/n";
                str = reader.readLine();
            }
            reader.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return text;
    }
}

以上是关于Android实战开发篇 txt文件内容转码,解决乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

JAVA利用commons.net.ftp.FTPClient的storeFileStream方法TXT文件上传. 已经转码UTF-16LE,上传后内容乱码

Android实战开发篇 读取Word文档的 doc 与 docx 格式文本内容(全网最详细!!!)

Android实战开发篇 解析读取复杂WordExcelPPT

Android实战开发篇 监听应用APK卸载覆盖安装的广播无法接受的问题解决

Android企业级实战-界面篇-2

Android企业级实战-界面篇-6