Convertir caracteres codificados en iso-8859-1 a UTF-8

Publicado en: Tecnología

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 🙂

5 Comentarios

  1. Mapi
    |

    Este me puede venir de perlas. Gracias Nico!

  2. Jose Manuel
    |

    como y donde utilizar el comando unix y donde, es por medio de un programa o que medio utilizas para ello, gracias.

  3. nico
    |

    Hola Jose Manuel.
    El comando iconv de Unix tal como lo explicaba en 2007, es solo válido para Mac OS X, se ejecuta desde Terminal.

    Con las actualizaciones del sistema, el comando puede haber cambiado un poco en cuanto a las opciones y parámetros.

    Es un comando que existe en más distribuciones *IX y que seguramente podrás usar tal cual a como lo ponía en este mensaje.

    Un saludo.

  4. jose manuel
    |

    Hola, quiere decir que los Windows 8 no podemos solucionar el problema.

  5. nico
    |

    Hola Jose Manuel.
    En Windows con PowerShell no sé si podríais conseguir algo equivalente. En cualquier caso, me instalaría un Linux (CentOS, Ubuntu…) en VirtualBox y disfrutaría de los comandos Unix 😉

    Siento que iconv no se incluya con distribuciones Microsoft.
    Desconozco si existe alguna aplicación gráfica que te pudiera ayudar, o algún editor de textos planos con herramientas de conversión.