2010-08-19 12 views
5

estoy tratando de analizar el título de la siguiente página web: http://kid37.blogger.de/stories/1670573/Problema Unicode con un título HTML, ¿signo de interrogación? 65533;

Cuando utilizo el método apache.commons.lang StringEscapeUtils.escapeHTML en el elemento title me sale el siguiente

Das hermetische Caf�: Rock & Wrestling 2010 

sin embargo cuando Lo muestro en mi página web con codificación utf-8, solo muestra un signo de interrogación.

Usando el siguiente código:

String title = StringEscapeUtils.escapeHtml(myTitle); 

Si corro el título a través de este sitio web: http://tools.devshed.com/?option=com_mechtools&tool=27 Me da la siguiente salida que parece correcta

TÍTULO:

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

se convierte (que Esperaba que el método escapeHtml lo hiciera):

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

¿Alguna idea? gracias

Respuesta

20

U + FFFD (decimal 65533) es el "carácter de reemplazo". Cuando un decodificador encuentra una secuencia inválida de bytes, puede (según su configuración) sustituir & # xFFFD; para la secuencia corrupta y continuar.

Una razón común para una secuencia "corrupta" es que se ha aplicado el decodificador incorrecto. Por ejemplo, el decodificador podría ser UTF-8, pero la página está realmente codificada con ISO-8859-1 (la predeterminada si no se especifica otra en el encabezado de tipo de contenido o equivalente).

Entonces, incluso antes de pasar la cadena al escapeHtml, el "& eacute;" ya ha sido reemplazado por "& # xFFFD;"; el método codifica esto correctamente.

La página en cuestión utiliza la codificación ISO-8859-1. Asegúrese de estar utilizando ese decodificador al convertir el recurso recuperado a String.

+0

tiene la razón Ajustó a iso-8859-1 y se procesó correctamente. muy apreciado. – James

Cuestiones relacionadas