FileReader的編碼問題

2021-05-21 23:33:34 字數 567 閱讀 6141

有乙個utf-8編碼的文字檔案,用filereader讀取到乙個字串,然後轉換字符集:str=new string(str.getbytes(),"utf-8");結果大部分中文顯示正常,但最後仍有部分漢字顯示為問號!

檔案讀入時是按os的預設字符集即gbk解碼的,我先用預設字符集gbk編碼str.getbytes(「gbk」),此時應該還原為檔案中的位元組序列了,然後再按utf-8解碼,生成的字串按理說應該就應該是正確的。

為什麼結果中還是有部分亂碼呢?

問題出在filereader讀取檔案的過程中,filereader繼承了inputstreamreader,但並沒有實現父類中帶字符集引數的建構函式,所以filereader只能按系統預設的字符集來解碼,然後在utf-8 -> gbk -> utf-8的過程中編碼出現損失,造成結果不能還原最初的字元。

原因明確了,用inputstreamreader代替filereader,inputstreamreader isr=new inputstreamreader(new fileinputstream(filename),"utf-8");這樣讀取檔案就會直接用utf-8解碼,不用再做編碼轉換。

mysql中的編碼問題 mysql編碼問題總結

網上查了一些mysql編碼相關的資料,在這裡整理下,不對的地方歡迎各位批評指正。character set server 預設的內部操作字符集 character set connection 連線層字符集 character set results 查詢結果字符集 character set da...

FileReader讀取檔案出現亂碼的解決辦法

之前用filereader讀取檔案時輸出控制台發現出現了中文亂碼,考慮到應該是編碼格式不一致的問題導致的,這裡在本地建立的乙個txt文字檔案,預設儲存的檔案編碼格式是ansi,那麼filereader在讀取檔案的編碼格式一定是和檔案編碼格式不一致匯出出現亂碼的,首先想到的是指定一下filereade...

HTML5中FileReader 的使用

filereader 讀取檔案內容 1.readastext 讀取文字檔案 可以使用txt開啟的檔案 返回文字字串,預設編碼為utf 82.readasbinarystring 讀取任意型別的檔案,返回二進位制字串。這個方法不是用來讀取檔案展示給使用者看的,而是儲存檔案。例如 讀取檔案的內容,獲取二...