UTF8 y los charsets: Ese dolor de cabeza

Hace ya bastante que me tuve que pelear con los charsets y el dichoso UTF8, y ahora a raíz de un amigo el incidente ha vuelto a mi cabeza. Los charsets son esos tranquilos y apacibles animalitos de pelo suave y sedoso que te encanta acariciar, pero que como algún día les caiga agua encima, la has jodido… Pues eso me pasó a mí…

Plogger (el software sobre el que basé en su día el portfolio y que ya está más retocado que Fraga) iba suavecito hasta que un día en los feeds, los caracteres extraños, como la eñe, los acentos etc, salían realmente extraños.

A continuación, simples pautas con las que acabé con mi dolor de cabeza (ojo, puede que no acabe con el tuyo):

  • Asegúrate de que tus archivos de texto estén en UTF8. Y asegúrate bien.
  • Especifica el charset en el HTML:
  • Especifica el charset en tu lenguaje servidor preferido. En PHP:
    header("Content-Type: text/html; charset=utf-8");
  • utf8_decode() y utf8_encode() son tus amigas.
  • Si tienes contenido en base de datos, asegúrate de que está en UTF8. Normalmente no hay problema, en mi caso, cómo no, lo había. Hay que especificarle a MySQL que charset usar para “entenderse” con el cliente (más info en inglés):
    SET NAMES 'utf8';
    Esto sólo es necesario a la hora de establecer la conexión con la BD, no en cada query.
  • Y por último, en el caso específico de los feeds, la función htmlentities no está soportada con UTF8. En los mismos comentarios de ese página, proponen su sustituta xmlentities:
    function xmlentities($string) {
    return str_replace ( array ( '&', '"', "'", '<', '>‘ ), array ( ‘&’ , ‘"’, ‘'’ , ‘<’ , ‘>’ ), $string );
    }

Y creo que ya está. Para completar, el ticket que abrí en Plogger para solucionar el tema.

Compártelo
March 21st, 2007 | Development, PHP |

Categories

Syndication

my favorite pictures

    Archives

    Cerrar
    Enviar por Correo