Convertir de latin1 a UTF-8 en MySQL

19/05/2009
By

Desde la version de  MySql 4.1 que el charset por default es UTF-8. Si tienen una base de datos antigua con datos en latin1 y desean actualizar, deben de hacer lo siguiente:

  1. Para no perder los datos exportamos la informacion de la base de datos en latin1 a un archivo plano con el comando mysqldump:
    :~$ mysqldump -u usuario -p base_de_datos –default-character-set=latin1 > backuplatin1.sql
  2. Entrando a la consola de MySQl (o mariadb) o administracion via web con PhpMyAdmin debemos de crear una nueva base de datos con el set de caracteres UTF8:
    :~$ mysql -u mi_usuario -p
    mysql> CREATE DATABASE nueva_db CHARACTER SET utf8 COLLATE utf8_general_ci;
  3. Ahora procedemos a convertir el set de caracteres del archivo backuplatin1.sql. Para luego con el archivo resultante cambiamos todas las referencias al juego de caracteres latin1:
    :~$ iconv -f ISO-8859-1 -t UTF-8 backup.sql > backup_utf8.sql
    :~$ perl -pi -w -e 's/CHARSET=latin1/CHARSET=utf8/g;' backup_utf8.sql
  4. Ahora con el backup o dump convertido al charset utf8 lo importamos a la nueva base de datos recien creada
    :~$ mysql -u mi_usuario -p  db_destino  –default-character-set=utf8 < backup_utf8.sql

Via | Gentoo Wiki

Popularity: 4% [?]


Otros articulos de interes:

  1. Cambiar el juego de caracteres de MySQL
  2. Amarok: Migracion de la base de datos Sqlite a Mysql 5
  3. MySQL ERROR 1436 (HY000) – Thread stack overrun
  4. MySQL Workbench 5.0 – El succesor de DBDesigner 4
  5. MySQL: Buscar y Reemplazar texto con SQL

Tags: backup sql, default character, juego de caracteres, mysqldump

One Response to Convertir de latin1 a UTF-8 en MySQL

  1. Alomaximo on 03/02/2010 at 11:44

    Deseaba saber si hay alguna funcion contraria para que en lugar de las palabras tildadas como á se vuelva una a con tilde?????

Leave a Reply

Your email address will not be published. Required fields are marked *

*