0

我正在从网上以不同的编码(我事先知道)下载一些 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对象(在本例中为 a )中。StringBuilderUTF-16

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

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

打开文件时,有一些乱码和多余的符号,表明编码有些混乱(例如 变成Ä )。

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

4

1 回答 1

0

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

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

于 2013-07-22T04:32:38.113 回答