我有一个编码为 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/
但仍然无法正常工作
有趣的是,这适用于我的本地电脑(xp),但不适用于我的 linux 机器。
我检查了我的 jdk 是否支持所需的字符集(它们是标准的,所以这并不奇怪)使用:
System.out.println(java.nio.charset.Charset.availableCharsets());