2010-08-19 4 views
5

Je suis en train d'analyser le titre de la page Web suivante: http://kid37.blogger.de/stories/1670573/Unicode problème avec un titre HTML, point d'interrogation? 65533;

Lorsque j'utilise la méthode apache.commons.lang StringEscapeUtils.escapeHTML sur l'élément de titre que je reçois le texte suivant

Das hermetische Caf�: Rock & Wrestling 2010 

Cependant, lorsque Je l'affiche dans ma page Web avec l'encodage utf-8, il montre juste un point d'interrogation.

En utilisant le code suivant:

String title = StringEscapeUtils.escapeHtml(myTitle); 

Si je lance le titre sur ce site: http://tools.devshed.com/?option=com_mechtools&tool=27 je reçois la sortie suivante qui semble correcte

TITRE:

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

DEVIENT (qui Je m'attendais à la méthode escapeHtml à faire):

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

des idées? merci

Répondre

20

U + FFFD (décimal 65533) est le "caractère de remplacement". Lorsqu'un décodeur rencontre une séquence d'octets invalide, il peut remplacer (en fonction de sa configuration) par & # xFFFD; pour la séquence corrompue et continuez. Une raison courante pour une séquence "corrompue" est qu'un mauvais décodeur a été appliqué. Par exemple, le décodeur peut être UTF-8, mais la page est effectivement codée avec ISO-8859-1 (la valeur par défaut si une autre n'est pas spécifiée dans l'en-tête de type de contenu ou équivalent). Donc, avant même de passer la chaîne à escapeHtml, le "& eacute;" a déjà été remplacé par "& # xFFFD;"; la méthode code cela correctement.

La page en question utilise le codage ISO-8859-1. Assurez-vous que vous utilisez ce décodeur lors de la conversion de la ressource récupérée en String.

+0

vous avez raison j'ai ajusté à iso-8859-1 et il a traité correctement. très appréciée. – James