2013-12-12 75 views
0

我在Java中遇到了CipherBufferedReader/Writer的一些問題。一切工作正常,如果任何人想要我的代碼但我可以發佈它,如果你想。問題是,如果我嘗試將加密的字節轉換爲字符串(正常工作),然後將其與BufferedWriter具有以下設置寫入文件:BufferedReader/Writer與特殊字符無法正常工作

FileWriter fwrit = new FileWriter(file); 
BufferedWriter buffwrit = new BufferedWriter(fwrit); //The writer itself 
String encTextString = new String(encText,"ISO-8859-1"); //The String that gets written later 

這種設置可以讓作家寫的特殊字符,我想問題不在這裏(如果是請告訴我)。 (是的,我已經檢查,如果解密沒有寫入文件,再次加載工作,它可以工作。)問題是我不能得到BufferedReader正確設置,是否有一種方法或其他writertype正確讀取字符?

+0

它可能是一個可能的重複? http://stackoverflow.com/q/9281629/2231632 – prabugp

+0

我已經嘗試了一段時間前在那個問題中提出的建議,沒有爲我工作。 – Slashking

+0

正如Russell所建議的那樣,您是否嘗試過使用OutputStreamWriter? – prabugp

回答

0

最好不要使用FileWriter,該類只是一個方便的類來將FileOutputStream包裝到OutputStreamWriter中。

OutputStreamWriter具有構造函數,用於使用特定的編碼對非ascii字符進行編碼。

FileWriter的缺乏那些....

+0

還有一些錯誤。我用你的方法和相同的ISO-8859-1編碼。結果:寫出來的東西:[B @16d19d73E z 9 閱讀材料:E?z?9 ?? [B @ 5ccc078 – Slashking

+0

發佈一條更多代碼 – GerritCap

2

FileWriter javadoc

「寫入字符文件的便捷類這個類的構造方法假定默認字符編碼和默認字節緩衝區大小都是要自己指定這些值,請在FileOutputStream上構建一個OutputStreamWriter。「

默認的字符集可能是UTF-8。所以,如果你想要寫ISO-8859-1,你需要做的:

new OutputStreamWriter(new FileOutputStream(file), Charset.forName("ISO-8859-1")) 

更重要的一點,不過,如果你的目標是讓編碼字節到文件不經修改,然後。 ...

FileWriter是用於寫入字符流,對於寫入原始字節流,請考慮使用FileOutputStream。」

+0

這樣? BufferedWriter buffwrit = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),「ISO-8859-1」)); – Slashking