我讀取編碼文件時遇到問題,以前在我自己的代碼上編寫過。Java - 無法正確讀取先前創建的編碼文件
原始字符串正確顯示(包括重音符號)
我的代碼來保存字符串的編碼文件如下:
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(fileName),
"ISO-8859-1");
writer.write(text);
然後,我讀這樣的文件:
InputStream is = getClass.getResourceAsStream(fileName);
try {
BufferedReader br = new BufferedReader(new InputStreamReader(is, "ISO-8859-1"));
String line;
StringBuilder sb = new StringBuilder();
while((line = br.readLine()) != null) {
sb.append(line);
}
String result = sb.toString();
} catch (UnsupportedEncodingException e3) {
} catch (IOException e) { }
字符串結果未正確顯示。例如,重音標記丟失。
我也嘗試過其他方式,比如將字符串編碼爲字節,然後將這些字節寫入文件。我總是得到相同的結果,也與其他ISO編碼。任何想法?
API工作正常,在終端的編碼設置中必定存在其他一些錯誤。 – Kennet
您在文件系統上編寫了一個文件,但讀取發生在資源上,類路徑上,可能打包在jar或war中。這可能意味着你正在談論兩個不同的文件,也許你的源代碼目錄中有一個文件,一個在build目錄或jar文件中。在書面文章之前,閱讀甚至可能在緩存版本上。更改內容以檢查該內容。 (然後'append(「\ r \ n」)'丟失,就像關閉的調用一樣)。 –
無法重現。如果讀取的文件與編寫相同的編碼相同,則會得到相同的字符 - 但我必須添加一個明確的'writer.close()'才能真正寫入。會發生什麼:不按照Joop建議的方式閱讀預期文件,在錯誤配置的終端上顯示文件之一等等。但它不是** Java轉換問題。 –