Hace unos días varios usuarios del navegador Konqueror nos escribieron para avisarnos de que se veían caracteres raros en la portada después de haber convertido Microsiervos a UTF-8. En el resto de páginas la visualización de caracteres era correcta –y en realidad sólo ocurría a unos pocos usuarios con Konqueror (Linux), pero de todos modos echamos un vistazo a ver dónde podría estar el problema.
Microsiervos es un site plano con páginas estáticas guardadas como archivos .html. Excepto la portada o página principal que se genera y guarda como index.php. En realidad por ningún motivo concreto, sí por si en algún momento queremos o necesitamos incluir o probar algo de programación. Y ese era el motivo del mini-bug.
Por defecto nuestro servidor (y esto es muy habitual) estaba configurado para servir los archivos .php con codificación ISO-8859-1. Y aunque se indique una codificación distinta en el arhivo HTML generado o contenido en los archivos .php en ocasiones (como este caso con el navegador Konqueror) pueden surgir el conflictos.
Para solucionar esto encontré dos opciones:
- Modificar la configuración de codificación (AddDefaultCharset) en el archivos de configuración del servidor Apache o desactivar esta configuración por defecto y que se declare en cada caso.
- Más sencillo aún e ideal si no tienes acceso a ese archivo de configuración o utilizas un hosting compartido es añadir en el archivo .php la línea
header('Content-Type: text/html; charset=UTF-8');
para forzar la codificación UTF-8 e ignorar la codficación que está configurada en el servidor.
Actualización 23/01/2006: Pau escribe para recordar que también en el archivo .htaccess es posible hacer esta modificación de la configuración añadiendo un
AddDefaultCharset off
o
AddDefaultCharset utf-8
para anular el juego de caracteres por defecto de la configuración (iso-8859-1) o configurarlos como UTF-8, respectivamente.