解决android读取中文乱码 自动判断文档类型并转码
解决 Android 读取中文乱码自动判断文档类型并转码 Android 读取中文 txt 文件时经常会出现乱码问题,主要是因为文档的编码格式不确定,从而导致读取时出现乱码。为了解决这个问题,我们可以通过自动判断文档类型并转码来解决乱码问题。 在 Java 中,我们可以使用 BufferedInputStream 和 BufferedReader 来读取文件,并通过判断文件的前三个字节来确定文件的编码格式。常见的编码格式有 UTF-8、Unicode、UTF-16BE 和 UTF-16LE 等。 在上面的代码中,我们首先使用 FileInputStream 和 BufferedInputStream 来读取文件,并将文件的前三个字节读取到 byte 数组中。然后,我们可以通过判断这三个字节的值来确定文件的编码格式。 如果前三个字节的值分别是 0xEF、0xBB 和 0xBF,那么文件的编码格式为 UTF-8;如果前两个字节的值分别是 0xFF 和 0xFE,那么文件的编码格式为 Unicode;如果前两个字节的值分别是 0xFE 和 0xFF,那么文件的编码格式为 UTF-16BE;如果前两个字节的值分别是 0xFF 和 0xFF,那么文件的编码格式为 UTF-16LE;否则,文件的编码格式为 GBK。 在确定了文件的编码格式后,我们可以使用相应的编码格式来创建 InputStreamReader,从而正确地读取文件的内容。 在 Android 中,我们可以使用 InputStreamReader 和 BufferedReader 来读取文件,并将文件的内容显示在屏幕上。例如,我们可以使用下面的代码来读取文件的内容: ```java public String convertCodeAndGetText(String str_filepath) { File file = new File(str_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 line; while ((line = reader.readLine()) != null) { text += line + "\n"; } } catch (Exception e) { e.printStackTrace(); } return text; } ``` 在上面的代码中,我们首先使用 FileInputStream 和 BufferedInputStream 来读取文件,然后使用 InputStreamReader 和 BufferedReader 来读取文件的内容。通过判断文件的前三个字节,我们可以自动判断文件的编码格式,并使用相应的编码格式来读取文件的内容。 通过自动判断文档类型并转码,我们可以解决 Android 读取中文 txt 文件时出现的乱码问题,从而正确地读取文件的内容。
- WindKun2018-10-26不错的资源可以参考
- xzxxiong2011-09-10测试了,还是没办法解决
- whjk1112014-03-10可以用,不过不能解决我的问题。
- okvictor_200820032013-09-05非常棒的方法,只是缺少对big5和没有特殊文件头的文件的判断
- Aguan大大2013-08-26用了一下 不过我的是针对字符串的 后来解决了 留着以后用
- 粉丝: 1
- 资源: 27
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于C语言的系统服务框架.zip
- (源码)基于Spring MVC和MyBatis的选课管理系统.zip
- (源码)基于ArcEngine的GIS数据处理系统.zip
- (源码)基于JavaFX和MySQL的医院挂号管理系统.zip
- (源码)基于IdentityServer4和Finbuckle.MultiTenant的多租户身份认证系统.zip
- (源码)基于Spring Boot和Vue3+ElementPlus的后台管理系统.zip
- (源码)基于C++和Qt框架的dearoot配置管理系统.zip
- (源码)基于 .NET 和 EasyHook 的虚拟文件系统.zip
- (源码)基于Python的金融文档智能分析系统.zip
- (源码)基于Java的医药管理系统.zip