我有一个示例程序,它从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 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实体都未正确转义,而不仅仅是
答案 0 :(得分:5)
jSoup工作正常,输出编码有问题。
在Windows中,控制台使用的字符编码(在您的情况下为CP437
)与系统编码(在您的情况下为Windows-1252
)不同。 System.out.println()
以系统默认编码输出您的字符串,因此它在控制台中显示不正确。
在Java 1.6中,您可以尝试使用System.console()
:
System.console().writer().println(linkText);