Convertir caracteres codificados en iso-8859-1 a UTF-8
Cómo convertir textos en caracteres iso-8859-1, Western Europe, a UTF-8, universal? Sin duda, después de muchos golpes, desilusiones y sorpresas, la mejor opción pasa por un comando de Unix, cómo no. En una línea tienes ejecutado y convertido tu texto, como el de una base de datos, a UTF-8 sin problemas ni sorpresas.
Caso práctico: convertir la base de datos de WordPress en iso-8859-1 a UTF-8
Lo mejor: usar el comando UNIX iconv.
Este blog es WordPress 1.5, codificado en caracteres iso-8859-1. Para migrarlo a WordPress 2.04 y ponerlo en codificación UTF-8, universal y más entendible con los scripts RSS cada vez más utilizados en el mundo mundial, necesito pasar los textos de los mensajes (posts) a UTF-8 pero sin símbolos raros, provocados por una mala codificación del UTF-8.
Para ello, debemos olvidarnos de hacer pasos previos por editores de texto plano, codificándolo en UTF-8. No funciona.
La mejor solución (y rápida) es emplear el comando UNIX iconv para convertir la codificación de caracteres de un texto.
La idea básica es hacer un backup de la base de datos de wordpress, convertir el fichero de texto de una codificación a otra para volverlo a volcar sobre una base de datos y comprobar que todo es correcto.
Veámoslo paso a paso:
1. Volcamos el contenido de la base de datos de WordPress a un fichero de texto (.sql)
shell> mysqldump -u root -p --opt wordpress > wordpress.sql
2. Convertimos la codificación de caracteres del fichero, de iso-8859-1 a UTF-8:
shell> iconv -f iso-8859-1 -t utf8 wordpress.sql > wordpress_utf.sql
3. Volcamos el contenido de este nuevo fichero a MySQL:
shell> mysql -u root -p wordpress_utf < wordpress_utf.sql
4. Modificamos el fichero de texto ‘wp-config.php’ para que apunte a esta nueva base de datos. Comprobamos que WordPress muestra bien el texto.
5. Sustituimos la base de datos antigua por la nueva codificada en UTF-8
Un saludo y que lo disfruten 🙂