JSoup字符编码问题#2

时间:2012-06-28 11:44:36

标签: java character-encoding jsoup

我正在构建这样的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 charset,似乎没问题。

任何人都能解释为什么会这样吗?根据我的理解,原始的html页面是UTF-8,这是默认的Jsoup编码..

1 个答案:

答案 0 :(得分:3)

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

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

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

此外,您需要确保文件查看器或保存文件后使用的任何进程 - 在整个管道中也使用UTF-8。另请参阅Unicode - How to get the characters right?