我正在从网上以不同的编码(我事先知道)下载一些 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 )中。StringBuilder
UTF-16
现在我将完全相同的字符串写入文件:
File file = new File(savePathHtml + filename);
try {
FileUtils.writeStringToFile(file, text, "utf-8");
} catch (IOException ex) {
logger.error(ex);
}
打开文件时,有一些乱码和多余的符号,表明编码有些混乱(例如
变成Ä
)。
在处理文件或字符串时,我是否误解了编码的工作原理?