我在读取编码文件时遇到问题,以前写过我自己的代码。
正确显示原始字符串(包括重音符号)
我将String保存到编码文件的代码如下:
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) { }
未正确显示字符串结果。例如,缺少重音符号。
我还尝试了其他方法,比如将String编码为字节,然后将这些字节写入文件。我总是得到相同的结果,也与其他ISO编码一样。有什么想法吗?
答案 0 :(得分:0)
问题是你的String有不同的字符集,可能是UTF-16。将文本输出为所需的字符集
此答案演示了syntax
答案 1 :(得分:0)
问题解决了!
它与代码中的任何错误都没有关系。我目前正在组建一个团队,该项目是使用 Maven 制作的。
在我构建项目的那一刻, Maven 将所有资源复制到另一个文件夹,并以UTF-8编码。在代码中,获取资源时,它正在读取的文件不是原始文件,而是 Maven 生成的UTF-8编码文件。
很抱歉没有发布这个细节,我是 Maven 的新手,我不知道这可能会导致这类问题。
谢谢大家的答案!