Por defecto MySQL suele crear la base de datos en un código de carácteres compatible con el sistema operativo. Si empezasteis con un desarrollo en Windows lo más probable es que lo hiciese en latin1.
A la hora de migrar los datos de servidor es cuando vienen los problemas y además si queremos convertirlos completamente a UTF8 que es la codificación ideal para los entornos con muchos idiomas. El proceso que al final he tenido que hacer ha sido el siguiente:
1) Exporto con mysqldump la base de datos ( bbdd.sql)
mysqldump –opt –uroot –ppassword –h localhost nombre_basededatos
2) En mi caso quería convertir de MyISAM a INNODB ( este paso no es necesario pero lo adjunto)
sed ‘s/ENGINE=MyISAM’/ENGINE=INNODB/’ bbdd.sql > bbddpaso1.sql
3) Sustituyo todos los códigos de caracteres latin1 por utf8
sed ‘s/latin1/utf8/’ bbddpaso1.sql > bbddpaso2.sql
4) Convierto los caracteres ( este es el paso clave)
iconv –f ISO-8859-1 –t UTF-8 bbddpaso2.sql > bbddpaso3.sql
5) Importo la base de datos ( previamente la tendremos que haber creado)
mysql –u root –p –default-character-set=utf8 nombre_basededatos < bbddpaso3.sql
Antes de importar convendrá ver si aún quedan referencias a códigos de carácteres que no sean utf8 y habrá que aplicar sustitución con el comando sed.
Este proceso ha sido probado en Ubuntu y ha funcionado perfectamente.
Popularity: 3% [?]


Post a Comment