我有一個文件,它被編碼爲iso-8859-1,並且包含諸如ô的字符。Java應用程序:無法正確讀取iso-8859-1編碼文件
我讀書用java代碼,像這樣的文件:
File in = new File("myfile.csv");
InputStream fr = new FileInputStream(in);
byte[] buffer = new byte[4096];
while (true) {
int byteCount = fr.read(buffer, 0, buffer.length);
if (byteCount <= 0) {
break;
}
String s = new String(buffer, 0, byteCount,"ISO-8859-1");
System.out.println(s);
}
然而ô角色總是出現亂碼,通常打印作爲? 。
我已經讀過這個主題(並且在學習中學到了一些東西),例如
- http://www.joelonsoftware.com/articles/Unicode.html
- http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058
- http://www.ingrid.org/java/i18n/utf-16/
但仍不能得到這個工作
有趣的是這部作品在我的本地PC(XP),但不是我的Linux中。
我已經檢查了我的JDK支持所需字符集(它們是標準的,所以這是沒有驚喜)使用:
System.out.println(java.nio.charset.Charset.availableCharsets());
我應該補充一點,我能夠正確地使用我的linux終端看到字符或原始文件,如果我只是簡單地捕捉文件的內容 – Joel 2009-01-31 11:45:08
終端正在使用什麼字符編碼? – McDowell 2009-01-31 11:59:08
有趣的是,如果我添加運行時Java屬性「-Dfile.encoding = UTF16」,它可以按預期工作,但我不明白爲什麼這應該重要 - 我不認爲它是一個解決方案,但更多的是黑客。它不適用於設置爲UTF8的屬性。 – Joel 2009-01-31 12:55:30