我读取编码文件时遇到问题,以前在我自己的代码上编写过。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转换问题。 –