2012-06-28 65 views
2

我构建JSoup文件是这样的:JSoup字符编码问题#2

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编码..

回答

3

适合我工作。你的问题是其他地方引起的

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

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

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

+0

这正是问题所在。它使用Java保存的默认字符集,即“MacRoman”。非常感谢! –

+0

不客气。 – BalusC