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:
- 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
- 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;
- 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
- 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