亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 762 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號