为了账号安全,请及时绑定邮箱和手机立即绑定

io FileReader 乱码问题 求解答

io FileReader 乱码问题 求解答

胡说叔叔 2018-07-19 15:31:12
今天复习java基础知识时候遇到个问题。我用流存的时候是UTF-8,但是使用FileReader读的时候,竟然不乱码。。为什么呢?难道FileReader不是GBK格式吗? public static void main(String[] args) throws Exception {       //writFile();              readFile();     }     public static  void readFile()throws Exception{         FileReader fileReader = new FileReader("F:/a.txt");         int len=0;         while ((len=fileReader.read())!=-1) {             System.out.println((char)len);         }         fileReader.close();     }     public static void writFile()throws Exception{         FileOutputStream fileOutputStream = new FileOutputStream("F:/a.txt");         OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream,"utf-8");         outputStreamWriter.write("您好ass");         outputStreamWriter.close();     }
查看完整描述

1 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

你这样new出来的FileReader,底层是使用默认字符编码的,默认字符编码是Charset.defaultCharset(),这个是和运行环境有关的,也可以通过java命令行参数指定。

总之,这个默认字符编码不是一个开发人员完全可以掌控的参数,也许你本机是好的、放到服务器上乱码,或者反之。

所以,这里保险点的办法是先获得字节流(FileInputStream),然后把字节流转成字符流,转的时候是可以自己制定字符编码的,这样不管是什么环境,程序的运行结果都是一致的。

另外,close()方法一定要写在finally{}里,虽然不是正式的代码,但要养成这个习惯。


查看完整回答
反对 回复 2018-07-26
  • 1 回答
  • 0 关注
  • 804 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号