2011-01-03 10 views
1

Ich habe ein kleines Beispielprogramm, das einige Informationen aus einem HTML-Dokument extrahiert.jSoup entblößt meine HTML-Entitäten nicht richtig

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); 

    } 

} 

Wenn Sie mit jSOup gearbeitet haben, wissen Sie, dass der Ausgang dieses exa mple sein sollte, aber der Ausgang ist exaámple. Warum entzieht jSoup meine HTML-Entitäten nicht korrekt oder mache ich das einfach falsch?

Alle meine HTML-Entitäten erhalten unescaped falsch und nicht nur &nbsp;

Antwort

5

jSoup richtig funktioniert, Sie haben ein Problem mit Ausgabecodierung.

In Windows ist die von Konsole verwendete Zeichencodierung (CP437 in Ihrem Fall) nicht die gleiche wie die Systemcodierung (Windows-1252 in Ihrem Fall). System.out.println() gibt Ihre Zeichenfolge in der Systemstandardcodierung aus, daher wird sie in der Konsole falsch angezeigt.

In Java 1.6 können Sie System.console() stattdessen versuchen:

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