java 逐行读取txt文本如何解决中文乱码


在Java中,逐行读取文本文件时遇到中文乱码问题,通常是因为文件编码与读取时使用的编码不一致所导致的。为了解决这个问题,你可以在读取文件时指定正确的字符编码。对于中文文本,常见的编码有UTF-8、GBK等。

以下是一个使用`BufferedReader`逐行读取文本文件并指定UTF-8编码的示例代码:


import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class ReadFileWithEncoding {
    public static void main(String[] args) {
        String filePath = "yourfile.txt"; // 替换为你的文件路径
        try (BufferedReader reader = new BufferedReader(new FileReader(filePath, "UTF-8"))) { // 指定UTF-8编码
            String line;
            while ((line = reader.readLine()) != null) {
                // 处理每一行
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

注意:

- `FileReader`的构造函数可以接收一个字符编码作为第二个参数,这样就可以确保在读取文件时使用了正确的编码。

- 如果你不确定文件的编码,可以尝试常见的编码如UTF-8或GBK,看看哪个能正确显示中文。

- 使用`try-with-resources`语句可以自动关闭`BufferedReader`,这是一种更简洁且资源友好的方式来处理资源。

如果你知道文件是以GBK编码的,只需将`"UTF-8"`替换为`"GBK"`即可。


new BufferedReader(new FileReader(filePath, "GBK"))