sql >> Base de Datos >  >> RDS >> Mysql

Formateo de línea de comando MySQL con UTF8

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?