MySQL conversión de LATIN1 a UTF-8

Seguramente alguna vez nos hemos encontrado que a la hora de comprobar un isert de miles de registros en una tabla recién creada ésta está codificada con LATIN1 cuando nosostros necesitamos tenerla en UTF-8.

Intentaré dar unos pasos para realizar la conversión y que todo funcione de nuevo con UTF-8.

Haced siempre una copia de seguridad antes de nada, recordad la Ley de Murphy.

  1. Hacer un backup de la base de datos con la codificación en LATIN1 a un fichero:mysqldump -u <usuario_BD> -p <nombre_BD_latin1> –default-character-set=latin1 > <nombre_BD_latin1>.sql
    Donde: usuario_BD es el nombre de usuario de la base de datos, nombre_BD_latin1 es el nombre de la base de datos con la codificación en LATIN1; este comando te pedirá la clave del usuario de base de datos introducido.
  2. Crear una base de datos vacía con codificación de caracteres UTF8:

    mysql -u <usuario_BD> -p
    CREATE DATABASE <nombre_BD_utf8> CHARACTER SET utf8 COLLATE utf8_general_ci;
    quit

  3. Modificar los caracteres del backup de LATIN1 a UTF8:

    iconv -f ISO-8859-1 -t UTF-8 <nombre_BD_latin1>.sql > <nombre_BD_utf8>.sql

  4. Substituir en la creación de las tablas del fichero de backup las cadenas que hacen que las tablas se creen con la codificación mala:

    perl -pi -w -e ‘s/CHARSET=latin1/CHARSET=utf8/g;’ <nombre_BD_utf8>.sql

  5. Importar el fichero de backup en la nueva base de datos:

    mysql -u <usuario_BD> -p <nombre_BD_utf8> –default-character-set=utf8 < <nombre_BD_utf8>.sql

Y listo, a trabajar en UTF-8.

Hacer un backup de la base de datos con la codificación en LATIN1 a un fichero:

mysqldump -u <usuario_BD> -p <nombre_BD_latin1> --default-character-set=latin1 > <nombre_BD_latin1>.sql
Donde: usuario_BD es el nombre de usuario de la base de datos, nombre_BD_latin1 es el nombre de la base de datos con la codificación en LATIN1; este comando te pedirá la clave del usuario de base de datos introducido.

Una respuesta a “MySQL conversión de LATIN1 a UTF-8”

  1. Pingback: Bitacoras.com

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *