Java文件读取乱码的解决办法

Java文件读取乱码的解决办法

使用java读取磁盘文件内容容易出现乱码, 问题是由于java使用的编码和被读取文件的编码不一致导致的。

java平台默认编码为UTF-8
可使用

System.out.println(Charset.defaultCharset());

打印查看


假设有一个test.txt的文本文件,文件内容为:“测试java读取中文字符串乱码问题”, 其中包含中文,文件的编码格式为GBK。 假如我们使用的java平台默认编码为UTF-8,我们要改成GBK

然而, Java IO 系统Reader系列中的FileReader是没有办法指定编码的,而FileReader的父类InputStreamReader可以指定编码,所以我们可以使用它来解决乱码问题

//	File file1 = new File("D:\\data.txt");
FileInputStream file1 = new FileInputStream("D:\\data.txt");
//  FileReader fr = new FileReader(file1);
InputStreamReader fr = new InputStreamReader(file1, "GBK");
 
BufferedReader br = new BufferedReader(fr);
while((str = br.readLine())!=null)
{
	System.out.println(str);
}

使用InputStreamReader代替FileReader,并在构造函数中指定以GBK编码读取FileInputStream中的内容, 便能打印正确的结果



以上内容对于完成作业已经够用了,

当然,除了此解决方案以外, 我们也可以使用Java IO系统中的InputStream系列类解决问题。 InputStream和Reader是Java IO系统中用来读取内容的两个分支,InputStream面向的是字节流,Reader面向的是字符, 字符存在编码问题,而字节流却不存在编码问题, 不过在最终将字节流转换成字符显示时还是涉及到编码问题的。 具体的用InputStream读取文件内容的解决方案,请看原作者。

链接: 简书:陈大侠 Java文件读取乱码问题解决.
真正彻底避免乱码的办法是我们一定要确定被读取文件的编码格式和java平台的编码格式一致.(详见上方链接)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章