FileReader讀取文件出現亂碼的解決辦法

  之前用FileReader讀取文件時輸出控制檯發現出現了中文亂碼,考慮到應該是編碼格式不一致的問題導致的,這裏在本地創建的一個txt文本文件,默認保存的文件編碼格式是ANSI,那麼FileReader在讀取文件的編碼格式一定是和文件編碼格式不一致導出出現亂碼的,首先想到的是指定一下FileReader讀取文件的編碼格式,但是看了一下FileReader的源碼見下圖
  這裏寫圖片描述

  這裏寫圖片描述
  
  簡單翻譯一下就是FileReader在讀取文件的時候採取的是系統默認的編碼格式,在cmd命令行通過chcp查看一下編碼格式,發現代碼頁爲936表示系統默認編碼格式爲GBK與windows 文本文件默認編碼格式不一致,所以必然會出現亂碼,而且比較坑爹的是FileReader在讀取文件的時候不能指定特定的編碼格式,如果你想要指定自己的編碼格式讀取文件,那就在FileInputStream外面嵌套InputStream 來代替FileReader,之後指定編碼格式即可,簡單來說讀取文件用下面的代碼即可

InputStreamReader inputStreamReader = new InputStreamReader( new FileInputStream(path),"UTF-8");   

  這裏還需要注意一點,這裏指定的編碼格式要與文本的編碼格式一致,否則還是會出現亂碼,通過文件另存爲指定一下編碼格式即可

  這裏寫圖片描述

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