Java - 无法正确读取以前创建的编码文件

时间:2016-08-09 08:22:38

标签: java file encoding writing

我在读取编码文件时遇到问题,以前写过我自己的代码。

正确显示原始字符串(包括重音符号)

我将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编码一样。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

问题是你的String有不同的字符集,可能是UTF-16。将文本输出为所需的字符集

此答案演示了syntax

答案 1 :(得分:0)

问题解决了!

它与代码中的任何错误都没有关系。我目前正在组建一个团队,该项目是使用 Maven 制作的。

在我构建项目的那一刻, Maven 将所有资源复制到另一个文件夹,并以UTF-8编码。在代码中,获取资源时,它正在读取的文件不是原始文件,而是 Maven 生成的UTF-8编码文件。

很抱歉没有发布这个细节,我是 Maven 的新手,我不知道这可能会导致这类问题。

谢谢大家的答案!