2009-09-19 7 views
23

Estoy analizando un documento HTML con un par de módulos Perl: HTML::TreeBuilder y HTML::Element. Por alguna razón, siempre que el contenido de una etiqueta es simplemente  , lo que es de esperar, que se devuelve HTML :: elemento como un personaje extraño que nunca he visto antes:¿Por qué aparece este carácter A0 en mi resultado HTML :: Element?

alt text http://www.freeimagehosting.net/uploads/2acca201ab.jpg

lo que pueda' Copie el personaje para que no pueda buscarlo en Google, no lo encuentre en el mapa de caracteres y, curiosamente, cuando lo busque con una expresión regular, lo encuentra en \w. Cuando convierto el documento devuelto a ANSI o UTF-8, desaparece por completo. No pude encontrar ninguna información en la documentación HTML :: Element tampoco.

¿Cómo puedo detectar y reemplazar este personaje con algo más útil como null y cómo debo lidiar con caracteres extraños como este en el futuro?

+0

el enlace de la imagen tiene podrido –

Respuesta

40

El carácter es "\xa0" (es decir, 160), que es la traducción estándar de Unicode para  . (Es decir, es el espacio sin interrupciones de Unicode). Debería poder eliminarlos con s/\xa0/ /g si lo desea.

+0

s/\ xa0// g # ... y algunos personajes más para hacer 15 ... – aidan

8

El personaje es non-breaking space que es lo   significa:

En el procesamiento de textos y archivos de texto digital, un espacio de no separación ("") (también llamados no-break espacio, espacio irrompible (NBSP), espacio duro o espacio fijo) es un carácter de espacio que impide un salto de línea automático en su posición. En algunos formatos, incluido HTML, también evita que los caracteres consecutivos en blanco se colapsen en un solo espacio.

En HTML, el espacio común de no separación, que tiene el mismo ancho que el carácter de espacio normal, se codifica como   o  . En Unicode, está codificado como U+00A0.

Cuestiones relacionadas