编写文件时,编码变得混乱

时间:2013-07-19 11:23:08

标签: java utf-8 character-encoding

我正在以不同的编码(我事先知道)从网上下载一些html文件,我需要将它们写入编码为UTF-8的文件中。 为简洁起见省略了一些内容:

try {
    url = new URL(urlString);
    is = url.openStream();
    buf = new BufferedReader(new InputStreamReader(is, charset));
    while ((line = buf.readLine()) != null) {
        text.append(line);
    }
} catch (MalformedURLException mue) {
    ...
} finally {
    ...
}
return text.toString();

如果Java中的所有字符串都编码为UTF-16,那么这应该将整个页面作为字符集读取(例如windows-1252)并将其存储在String对象中(在这种情况下) StringBuilder)重新编码为UTF-16

现在我将完全相同的字符串写入文件:

File file = new File(savePathHtml + filename);
try {
    FileUtils.writeStringToFile(file, text, "utf-8");
} catch (IOException ex) {
    logger.error(ex);
}

打开文件时,会出现一些乱码和额外符号,表示编码有些混乱(例如 变成Ä )。

在处理文件或字符串时,我是否误解了编码的工作原理?

1 个答案:

答案 0 :(得分:0)

我发现在打开下载的文件时,没有一个文本编辑器可以正确识别编码。

如果我打开文件并选择编码为UTF-8,一切看起来都不错。