Feeds: problemas de codificación

18.oct 2007 Envía un trackback

Dependiendo de la configuración del servidor la codificación de caracteres puede traer ciertos problemas a la hora de crear feeds para la sindicación de contenidos.

Es posible que el contenido del archivo rss generado esté bajo la codificación iso-8859-1 sin embargo el servidor (Apache) lo esté sirviendo como utf-8 y tanto los servicios de lectura como los lectores se estén haciendo un lío con tanto acento mal puesto (jurar?a que si xD).

Your feed appears to be encoded as "iso-8859-1", but your server is reporting "US-ASCII"
El problema lo ha reportado e.minguez al que le agradezco enormemente el mail que he recibido. Nota mental: Por pasarme de curioso he descubierto 2girs1cup... sin comentarios al respecto :D.

La solución -gracias a betabug y a varias búsquedas en google- ha sido sencilla de implementar. Simplemente hay que decirle a Apache que sirva los archivos .rss con una codificación distinta de la habitual. Para ello en httpd.conf agregamos lo siguiente:
AddType   text/xml;charset=iso-8859-1   .rss
Si ahora miramos las cabeceras HTTP de la petición podemos ver como tanto la codificación como el tipo de archivo son correctos:
Content-Type: text/xml; charset=ISO-8859-1
Para hurgar en las cabeceras HTTP existe una extensión para firefox llamada Live HTTP Headers o la clásica opción del telnet servidor 80 y un GET http://url/que_queramos capturando el flujo de datos.
rdf feed sindication codification iso utf

Comentarios
Gravatar MarcosBL@18.10.2007, 'Re: Feeds: problemas de codificación'

Si no queremos definirlo así para todo el servidor, o nos encontramos en un hosting compartido sin acceso a "tocar" las directivas de Apache, también nos puede srevir un simple header en php, bien fijando en un .htaccess que el xml sea procesado como php, bien creando un rss.php en vez de .xml:

<? header('Content-Type: text/xml; charset=iso-8859-1'); ?>

Gravatar r0sk@18.10.2007, 'Re: Feeds: problemas de codificación'

Muy interesante y complementario el comentario MarcosBL, había pensado en la "opción header" pero no se me ocurría la forma de incrustarla en un .rss, imagino que renombrarlo a .php no tendrá ningún tipo de "efectos colaterales". Gracias por la aportación.

Gravatar MarcosBL@18.10.2007, 'Re: Feeds: problemas de codificación'

Si no quieres renombrarlo tambien puedes poner en un .htaccess donde esté el XML:

AddHandler application/x-httpd-php .xml

Y a vivir, si no me equivoco (tú sabes más de apache que yo) podrás incluir código php en ese xml concreto, sin afectar al resto del servidor.


Escribe tu comentario
 
 
Guardar datos
Escribe tu comentario:
captcha


Intenta que tu comentario sea interesante y con información relevante al tema de la entrada. BBCodes disponibles: [url=http://direccion]texto[/url], negrita: [b]texto[/b], itálica: [i]texto[/i], subrayada: [u]texto[/u]. Para mencionar o citar a alguien (quote): [cita]texto[/cita]