BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(packageFilePath)));
当使用此Reader读取GBK编码的文件时,所有的中文都会乱码,因为Reader会将读取到的byte转换成char,如果没有指定转换编码,那么Android默认是使用的utf8,那么读取到的内容就会错误。
那么假如读取完毕后进行一次转码是否可以解决乱码问题呢?
比如:
String s = readline();
s = new String(s.getBytes("gbk"), "gbk");
思路是获得字符串的gbk编码,按照gbk编码重新解析一遍,实验证明是不可以的,是什么原因呢?
举例说明:
byte ge[] = {(byte)0xb8, (byte)0xf6};
这是汉字‘个’的gbk编码。
String s = new String(ge, "gbk");
此时s不会是乱码。
s.getBytes("utf8") //得到-28,-72,-86。‘个’的utf8编码
s.getBytes("gbk") //得到0xb8,0xf6。‘个’的gbk编码
而如果用一下代码生成s:
String s = new String(ge, "utf8");
此时s已经是乱码。
s.getBytes("utf8") //得到-17,-65,-67,-17,-65,-67
此时s的内容已经完全乱掉了,所以再用
s.getBytes("gbk");
得到的数据也是乱的,无法逆向出真正的内容来。
所以要解决这个问题只能是让reader将byte转向char时使用正确的编码,即生成Reader时指定编码,即:
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(packageFilePath), "gbk"));
分享到:
相关推荐
在文章中,还提供了一些关于 TXT 文件编码格式的信息。TXT 文件有四种编码选项:ANSI、Unicode、Unicode big endian 和 UTF-8。默认情况下,TXT 文件的编码格式是 ANSI 编码,也就是系统的默认编码,通常是 GBK 编码...
可以使用工具,如Notepad++,来检查和更改文件编码。 4. **处理BOM头**:UTF-8有带BOM和不带BOM两种形式,如果文件开头带有BOM标记,可能需要在读取时进行特殊处理,因为某些库可能不支持带BOM的UTF-8。 5. **使用...
### 关于GBK和Unicode字符集转换乱码问题 在计算机科学与互联网技术中,字符集是一种用于表示文本的标准集合,不同的字符集适用于不同的语言环境。本文将深入探讨GBK与Unicode这两种字符集之间的转换问题,特别是在...
Java 读写文件避免中文乱码 Java 语言在读写文件时,经常会 gặp到中文乱码的问题。这是因为 Java 默认使用的...为了避免中文乱码,需要在读取和写入文件时,使用正确的编码方式,并选择合适的编码方式进行编码转换。
通过以上步骤,我们可以实现一个相对完整的读取中文TXT文件的解决方案,即使文件编码未知,也能自动判断并转换,避免乱码问题。在实际开发中,建议结合具体需求选择合适的方法,确保代码的稳定性和效率。 当然,...
以下将详细讲解如何在Android中读取本地JSON文件,并解决可能出现的显示乱码问题。 1. **读取本地JSON文件(但显示汉字乱码)** 这个问题通常发生在读取文件时没有正确指定字符编码。在Android中,我们通常使用`...
当处理包含中文字符的CSV文件时,可能会遇到乱码问题,这通常与文件编码设置有关。本篇文章将详细探讨如何在Java中解析CSV文件,并解决中文乱码的问题。 首先,我们需要了解如何使用Java的标准库`java.io`和`java....
2. **正确设置读取编码**:根据识别出的文件编码格式,使用相应的字符集来解析文件内容。 #### 四、具体实现步骤 1. **创建文件输入流**:通过`FileInputStream`创建一个文件输入流对象,用于读取指定路径的文件。...
在Java编程中,读取包含中文字符的文件时可能会遇到乱码问题,这通常是由于编码格式不匹配导致的。要解决这个问题,我们需要理解文件的原始编码格式,并在Java代码中正确地设置字符集。以下是一些相关的知识点: 1....
2. **读取GBK文件**:使用Java的`InputStreamReader`和`BufferedReader`,指定GBK作为输入流的字符编码,读取文件内容。 3. **转换编码**:创建一个新的`OutputStreamWriter`和`BufferedWriter`,指定UTF-8作为输出...
3. **转换文件编码**:如果文件的编码不正确,可以先检测其实际编码,然后使用相应的工具将其转换为所需的编码格式。例如使用Notepad++等文本编辑器进行编码转换。 4. **统一编码标准**:在开发过程中尽可能地使用...
5. **在代码中指定编码**:如果是在读取文件时遇到问题,可以确保在读取流时明确指定GBK编码,例如在Java中使用`InputStreamReader`和`BufferedReader`。 6. **版本控制设置**:如果你使用Git等版本控制系统,确保....
例如,如果文件采用 UTF-16 编码,而 Java 代码使用默认的GBK编码去读取,那么就会产生乱码。 2. **解决方法**: - 使用 `BufferedReader` 和 `FileReader` 读取文件时,可以指定编码格式。在示例代码中,通过将 `...
如果在上传到HDFS的文件编码与Hadoop默认的UTF-8不符,下载时就会出现乱码。解决方式是确保在上传文件前将其转换为UTF-8编码。 3. **MapReduce处理阶段**: MapReduce作业中的Mapper和Reducer可能会接收到乱码数据...
- 在处理文本输入输出时,使用`InputStreamReader`和`OutputStreamWriter`配合指定的字符集进行读写操作,避免乱码。 通过以上步骤,大部分MyEclipse中的乱码问题都能得到解决。在日常开发中,养成良好的编码习惯...
Java 读取 TXT 文本文件时遇到乱码问题通常是由于编码格式不匹配导致的。...同时,为了防止不必要的编码问题,建议在创建和保存文本文件时明确指定编码,例如使用 UTF-8,因为它是目前最广泛支持的标准编码。
7. **IDE设置**:确保集成开发环境(IDE)的编码设置与项目文件编码一致,避免在IDE内部处理文件时产生乱码。 8. **国际化和本地化**:对于多语言支持的项目,需要考虑不同地区的编码习惯,使用适当的字符集。 9. ...
Android 读取中文 txt 文件时经常会出现乱码问题,主要是因为文档的编码格式不确定,从而导致读取时出现乱码。为了解决这个问题,我们可以通过自动判断文档类型并转码来解决乱码问题。 在 Java 中,我们可以使用 ...
在Android系统中,大部分内部操作都是基于Unicode的,但有时候我们需要与GBK编码的数据进行交互,比如读取GBK格式的文本文件或网络数据。本文将深入探讨如何在Android中进行GBK与Unicode之间的转换。 首先,我们...