【问题标题】:JSoup character encoding issue #2JSoup 字符编码问题 #2
【发布时间】:2012-06-28 11:44:36
【问题描述】:

我正在构建一个这样的 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编码..

【问题讨论】:

    标签: java character-encoding jsoup


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 这正是问题所在。它在 Java 保存中使用默认字符集,即“MacRoman”。非常感谢!
    猜你喜欢
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 2012-02-27
    相关资源
    最近更新 更多