jSoup并没有正确地取消我的HTML实体

时间:2011-01-03 17:52:20

标签: java jsoup

我有一个示例程序,它从HTML文档中提取一些信息。

import org.jsoup.*;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class TestSoup {

    public static void main(String[] args) {

        String html = "<p>An <a href='http://example.com/'><b>exa&nbsp;mple</b></a> link.</p>";
        Document doc = Jsoup.parse(html);
        Element link = doc.select("a").first();

        String linkText = link.text(); // "example""
        System.out.println(linkText);

    }

}

如果你使用过jSOup,你就会知道它的输出应该是exa mple,但输出是exaámple。为什么jSoup没有正确地取消我的HTML实体,或者我只是做错了?

我的所有HTML实体都未正确转义,而不仅仅是&nbsp;

1 个答案:

答案 0 :(得分:5)

jSoup工作正常,输出编码有问题。

在Windows中,控制台使用的字符编码(在您的情况下为CP437)与系统编码(在您的情况下为Windows-1252)不同。 System.out.println()以系统默认编码输出您的字符串,因此它在控制台中显示不正确。

在Java 1.6中,您可以尝试使用System.console()

System.console().writer().println(linkText);