Respuesta corta
Inicie el cliente con la opción --default-character-set=utf8
:
mysql --default-character-set=utf8
Puede establecer esto como predeterminado en /etc/mysql/my.cnf
archivo.
[mysql]
default-character-set=utf8
La respuesta corta no funcionó, lea a continuación
El comando anterior fuerza el character_set_client
, character_set_connection
y character_set_results
variables de configuración para ser utf8
.
Para verificar los valores de todas las variables de configuración relacionadas con el conjunto de caracteres, puede ejecutar:
show variables like '%char%';
El character_set_database
le proporciona el conjunto de caracteres de la base de datos actual (esquema) en la que se encuentra. El esquema y las tablas se crean de forma predeterminada con el conjunto de caracteres especificado en el character_set_server
, a menos que se especifique explícitamente en el CREATE
declaración.
El character_set_server
se puede cambiar en my.cnf
archivo:
[mysqld]
character-set-server = utf8
Además, las tablas y las columnas pueden tener su propio juego de caracteres, que puede ser diferente de su tabla o esquema principal. Para verificar específicamente los valores de cada tabla y columna en una base de datos, consulte esta respuesta:¿Cómo veo qué conjunto de caracteres es una base de datos/tabla/columna MySQL?
Si desea cambiar el conjunto de caracteres de las tablas y columnas existentes, consulte esta respuesta:¿Cómo convertir un juego de caracteres completo de una base de datos MySQL y una intercalación a UTF-8?
Más información sobre conjuntos de caracteres de conexión en la documentación de mysql .
Todo está configurado en utf8, pero sigo viendo caracteres raros
Incluso si todas las variables, tablas y columnas de juegos de caracteres están configuradas en utf8
, puede haber casos en los que vea caracteres extraños en su pantalla. Por ejemplo, alguien podría haber escrito caracteres Unicode en un utf8
columna, a través de un cliente con latin1
conexión (por ejemplo, ejecutando mysql --default-character-set=latin1
). En este caso, debe conectarse a la base de datos con el mismo juego de caracteres que se escribieron los valores. También puede recuperarlos y reescribirlos mediante la codificación correcta.
NOTA :Como señalan los comentarios, mysql utf8
La codificación no es una implementación verdadera y completa de UTF-8. Si se necesita una implementación completa de UTF-8, se puede usar utf8mb4
juego de caracteres:
mysql --default-character-set=utf8mb4
Más información aquí:¿Cuál es la diferencia entre los conjuntos de caracteres utf8mb4 y utf8 en MySQL?