Frage
Ich habe ein kleines Beispielprogramm, das einige Informationen aus einem HTML -Dokument extrahiert.
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);
}
}
Wenn Sie mit JSOUP gearbeitet haben, wissen Sie, dass die Ausgabe davon sein sollte exa mple
Aber der Ausgang ist exaámple
. Warum ist JSOUP meine HTML -Entitäten nicht richtig und mache ich das einfach falsch?
Alle meine HTML -Entitäten werden falsch und nicht nur falsch und nicht nur falsch
Lösung
JSOUP funktioniert korrekt, Sie haben ein Problem mit der Ausgangscodierung.
In Windows, Zeichenkodierung von Konsole (von der Konsole verwendet (CP437
in Ihrem Fall) ist nicht dasselbe wie die Systemcodierung (Windows-1252
in Ihrem Fall). System.out.println()
gibt Ihre Zeichenfolge in der Systemstandkodierung aus, daher wird sie in der Konsole falsch angezeigt.
In Java 1.6 können Sie es versuchen System.console()
stattdessen:
System.console().writer().println(linkText);