Java 使用流读文本数据时乱码 解决方法

Posted 测试开发喵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 使用流读文本数据时乱码 解决方法相关的知识,希望对你有一定的参考价值。

一、问题描述

  当我使用FileReader读取文本文件里的汉字时,读出来的是乱码。但为什么字符是正常的呢???

二、原因探究

  其根本原因在于编码标准不同。汉字采用gbk,而idea使用UTF-8。gbk编码中文是2个字节,UTF-8编码是3个字节代表一个字符,read读到的是一个字节,一个中文,当然就读半个字节了,不完全当然是乱码了。

三、解决方法

  将FileReader改用FileInputStream读取文件,就OK啦:

InputStreamReader reader = new InputStreamReader(new FileInputStream(filepath), "GBK");
BufferedReader br = new BufferedReader(reader);
String line;
while ((line = br.readLine()) != null) {
//。。。
}

以上是关于Java 使用流读文本数据时乱码 解决方法的主要内容,如果未能解决你的问题,请参考以下文章

JAVA UTF-8文本再次转UTF-8就会乱码

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

RedHat Linux文本模式下乱码解决方法

控制台和页面传输乱码问题

字体与系统字体冲突时Java JLabel HTML显示乱码

maven下载源代码,解决中文注释为乱码的问题