2012-12-14 45 views
0

我正在使用「FileInputStream」和「FileReader」從包含unicode字符的文件中讀取數據。閱讀Java中的Unicode字符

當我設置爲「cp-1252」的默認編碼都讀取垃圾數據,當我設置默認編碼爲UTF-8都讀得很好。

  1. 這是真的,這兩個這些使用系統默認編碼來讀取數據?
  2. 那麼,如果依賴於系統編碼,那麼使用字符流有什麼好處。
  3. 是否有除了任何方式:

    BufferedReader fis = new BufferedReader(new InputStreamReader(new FileInputStream("some unicode file"),"UTF-8")); 
    

    正確地讀取數據時,默認的編碼比UTF-8等。

+0

爲什麼手動設置編碼對你來說是不好的選擇? –

+0

@ Aleksander Gralak我們可以隨時做,我想知道如何以編程方式做到這一點,即使默認編碼不同。 –

+0

但你正在編程。它是硬編碼的,但它在源代碼中。如果你想在運行時做到這一點,那麼從某種屬性獲取字符串。對不起,我只是不明白你在這裏遇到了什麼問題。 –

回答

1

FileReader和FileWriter應該恕我直言不推薦使用。使用

new InputStreamReader(new FileInputStream(file), "UTF-8") 

左右。

這裏還存在一個沒有編碼參數的重載版本,使用默認平臺編碼:System.getProperty("file.encoding")

+0

爲什麼應該被讀者和作家棄用?他們應該讀/寫字符數據,這正是這種情況。 – Behnil

+0

只有文件版本,因爲它們沒有帶字符集參數的重載版本。 –