2013-10-14 53 views
2

我有字節數組,它放入InputStreamReader並對其進行一些操作。讀取編碼不良的文件。 CP1252與UTF-8

Reader reader = new InputStreamReader(new ByteArrayInputStream(byteArr)); 

JVM有默認CP1252編碼,但文件,我翻譯成字節陣列具有UTF-8編碼。此文件也有德文變音符號。當我在InputStreamReader中放入字節數組時,java將umlauts解碼爲錯誤的符號。例如ü表示爲ü。我試圖把「UTF-8」和Charset.forName(「UTF-8」)。newDecoder());到InputStreamReader的構造函數,通過新的String(oldStr.getBytes(「cp1252」),「UTF-8)」將字符串從閱讀器轉換爲字符串,但它沒有幫助;在reader變量的調試器中,我看到StreamDecoder參數,解碼器」與MS1252 $解碼器的價值。也許這是解決我的問題,但我不明白,我怎麼能解決這個問題。

回答

2

嘗試自行使用InputStreamReader(InputStream in, String charsetName)構造並設置字符集。

Reader reader = new InputStreamReader(new ByteArrayInputStream(byteArr), "UTF-8"); 
+0

不,它不工作:( –

+0

看來你是以錯誤的方式讀取或操縱數據。順便說一句cp1252支持德語。你能顯示讀取文件和輸出結果的代碼嗎? –

+0

也許嘗試設置像這樣的默認JVM編碼 http://stackoverflow.com/questions/361975/setting-the-default-java-character-encoding –

0

我完全相同的錯誤,並最終通過將此添加到JVM啓動選項來解決問題:

-Dfile.encoding=UTF8