IO使用BufferedReader字符流读取文件中文乱码问题D

作者:

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

硬盘中存在文件d://demo.txt,内容如下

你好 123 helloworld 你好世界

使用BufferedReader字符流读取

@Test public void test21() throws IOException { BufferedReader br = new BufferedReader(new FileReader("d://demo.txt")); String str = null; while ((str = br.readLine()) != null) { System.out.println(str); } br.close(); }

结果,发现中文乱码

��� 123 helloworld �������

这是因为我们的eclipse工作空间是utf-8编码格式的,使用FileReader默认是按照工作空间的编码集读取的,而文件在硬盘上存储的格式是gbk(简体中文Windows操作系统中ANSI编码相当于gbk),所以导致乱码。

那么我们只要把eclipse工作空间的编码集改为gbk就好了,但是一般开发中不这么做,既然文件的编码格式是gbk,那么我们能不能使用gbk编码集读取呢?答案是可以的,就是使用FileReader的父类InputStreamReader,可以指定编码集

@Test public void test21() throws IOException { // BufferedReader br = new BufferedReader(new FileReader("d://demo.txt")); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("d://demo.txt"), "gbk")); String str = null; while ((str = br.readLine()) != null) { System.out.println(str); } br.close(); }

结果如下

你好 123 helloworld 你好世界
the end

免责声明:本文内容均来自互联网,但不代表简明教程的观点和立场.

已有 4537 次赞