2

我正在构建一个这样的 JSoup 文档:

String user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/A.B     (KHTML, like Gecko) Chrome/X.Y.Z.W Safari/A.B.";
String url = "http://www.ncbi.nlm.nih.gov/pmc/articles/PMC24391/?tool=pubmed";
Document doc = return Jsoup.connect(url).userAgent(user_agent).get();

然后,我使用保存到文件doc.toString(),在保存的文件中我看到字符替换为?. 比如5 μm会变成5 ?m.

如果我更改输出设置以使用 ISO-8859-1 字符集,它似乎没问题。

谁能解释这是为什么?据我了解,原始 html 页面是 UTF-8,这是默认的 Jsoup 编码。

4

1 回答 1

3

对我来说很好。您的问题是在其他地方引起的。

最可能的原因是您没有使用 UTF-8 保存文件。您应该使用OutputStreamWriter以指定字符编码将字符写入文件。

writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");

此外,您需要确保文件查看器或您在保存文件使用的任何进程也在整个管道中使用 UTF-8。另请参阅Unicode - 如何正确获取字符?

于 2012-07-01T04:39:35.927 回答