2010-08-19 3 views
5

Ich versuche, den Titel aus der folgenden Webseite zu analysieren: http://kid37.blogger.de/stories/1670573/Unicode-Problem mit einem HTML-Titel, Fragezeichen? 65533;

Wenn ich die apache.commons.lang StringEscapeUtils.escapeHTML Methode auf dem Elementtitel verwende ich die folgende

Das hermetische Caf�: Rock & Wrestling 2010 

jedoch erhalten, wenn Ich zeige an, dass in meiner Webseite mit utf-8-Codierung nur ein Fragezeichen angezeigt wird.

Verwendung des folgenden Codes:

String title = StringEscapeUtils.escapeHtml(myTitle); 

Wenn ich den Titel über diese Website ausführen: http://tools.devshed.com/?option=com_mechtools&tool=27 ich die folgende Ausgabe, die

TITEL richtig scheint:

<title>Das hermetische Café: Rock &amp; Wrestling 2010</title> 

WIRD (die Ich habe erwartet, dass die escapeHtml-Methode zu tun):

<title>Das hermetische Caf&eacute;: Rock &amp; Wrestling 2010</title> 

irgendwelche ideen? danke

Antwort

20

U + FFFD (dezimal 65533) ist das "Ersatzzeichen". Wenn ein Dekoder auf eine ungültige Bytefolge trifft, kann er (abhängig von seiner Konfiguration) ersetzen & # xFFFD; für die korrupte Sequenz und weiter.

Ein häufiger Grund für eine "beschädigte" Sequenz ist, dass der falsche Decoder angewendet wurde. Der Dekodierer könnte beispielsweise UTF-8 sein, aber die Seite ist tatsächlich mit ISO-8859-1 codiert (der Standardwert, wenn ein anderer nicht in der Kopfzeile des Inhaltstyps oder einem Äquivalent angegeben ist).

Also, bevor Sie die Zeichenfolge sogar an escapeHtml weitergeben, die "& eacute;" wurde bereits durch "& # xFFFD;" ersetzt; Die Methode codiert dies korrekt.

Die fragliche Seite verwendet ISO-8859-1-Codierung. Stellen Sie sicher, dass Sie diesen Decoder verwenden, wenn Sie die abgerufene Ressource in eine String konvertieren.

+0

Sie sind richtig, ich habe auf iso-8859-1 eingestellt und es richtig verarbeitet. sehr geschätzt. – James