我正在以不同的编码(我事先知道)从网上下载一些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);
}
打开文件时,会出现一些乱码和额外符号,表示编码有些混乱(例如
变成Ä
)。
在处理文件或字符串时,我是否误解了编码的工作原理?
答案 0 :(得分:0)
我发现在打开下载的文件时,没有一个文本编辑器可以正确识别编码。
如果我打开文件并选择编码为UTF-8
,一切看起来都不错。