Feeds: problemas de codificación
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).
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 .rssSi 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-1Para 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.
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'); ?>
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.
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.


