Actualización:
Respuesta corta:casi siempre debería usar utf8mb4
juego de caracteres y utf8mb4_unicode_ci
colación.
Para modificar la base de datos:
ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Ver:
-
El comentario de Aaron sobre esta respuesta hacer que MySQL maneje UTF-8 correctamente
-
¿Cuál es la diferencia? entre utf8_general_ci y utf8_unicode_ci
-
Guía de conversión:https://dev.mysql. com/doc/refman/5.5/en/charset-unicode-conversion.html
Respuesta original:
MySQL 4.1 y superior tiene un conjunto de caracteres predeterminado de UTF-8. Puede verificar esto en su my.cnf
archivo, recuerde configurar ambos cliente y servidor (default-character-set
y character-set-server
).
Si tiene datos existentes que desea convertir a UTF-8, descargue su base de datos y vuelva a importarla como UTF-8 asegurándose de lo siguiente:
- use
SET NAMES utf8
antes de consultar/insertar en la base de datos - use
DEFAULT CHARSET=utf8
al crear nuevas tablas - en este punto, su cliente y servidor MySQL deben estar en UTF-8 (vea
my.cnf
). recuerde que cualquier idioma que use (como PHP) también debe ser UTF-8. Algunas versiones de PHP usarán su propia biblioteca de cliente MySQL, que puede no ser compatible con UTF-8.
Si desea migrar los datos existentes, recuerde hacer una copia de seguridad primero. ¡Pueden ocurrir muchos cortes extraños de datos cuando las cosas no salen según lo planeado!
Algunos recursos:
- migración completa de UTF-8 (cdbaby.com)
- artículo sobre preparación UTF-8 de funciones php (tenga en cuenta que parte de esta información está desactualizada)