我有一个文件,它被编码为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