300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 解决 java BufferedReader.readLine()方法按行读取文件内容中文乱码的问题

解决 java BufferedReader.readLine()方法按行读取文件内容中文乱码的问题

时间:2018-09-21 09:02:50

相关推荐

解决 java BufferedReader.readLine()方法按行读取文件内容中文乱码的问题

原来的代码如下所示,但是输出的内容都是乱码

public void readLine(String path) {InputStreamReader isr = null;BufferedReader br = null;try {isr = new InputStreamReader(new FileInputStream(path));br = new BufferedReader(isr);String str;// 通过readLine()方法按行读取字符串while ((str = br.readLine()) != null) {System.out.println(str);}} catch (IOException e) {e.printStackTrace();} finally {// 统一在finally中关闭流,防止发生异常的情况下,文件流未能正常关闭try {if (br != null) {br.close();}if (isr != null) {isr.close();}} catch (IOException e) {e.printStackTrace();}}}

解决办法是在创建InputStreamReader对象的时候指定文件的编码

我先用EditPlus打开文件,在右下角可以看到文件的编码为ANSI,但是在代码中设置编码为ANS后却报Unknown encoding:'ANSI'错误

凭借以往的经验,Window中中文编码一般为GBK,设置后果然不报红,而且运行后也能够成功输出中文了

以下为修改后正常运行的代码

public void readLine(String path) {InputStreamReader isr = null;BufferedReader br = null;try {isr = new InputStreamReader(new FileInputStream(path), "GBK");br = new BufferedReader(isr);String str;// 通过readLine()方法按行读取字符串while ((str = br.readLine()) != null) {System.out.println(str);}} catch (IOException e) {e.printStackTrace();} finally {// 统一在finally中关闭流,防止发生异常的情况下,文件流未能正常关闭try {if (br != null) {br.close();}if (isr != null) {isr.close();}} catch (IOException e) {e.printStackTrace();}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。