Mysql
 sql >> Base de données >  >> RDS >> Mysql

Formatage de la ligne de commande MySQL avec UTF8

Réponse courte

Démarrez le client avec l'option --default-character-set=utf8 :

mysql --default-character-set=utf8

Vous pouvez le définir par défaut dans le /etc/mysql/my.cnf fichier.

[mysql]
default-character-set=utf8

La réponse courte n'a pas fonctionné, lisez ci-dessous

La commande ci-dessus force le character_set_client , character_set_connection et character_set_results les variables de configuration doivent être utf8 .

Afin de vérifier les valeurs de toutes les variables de configuration liées au jeu de caractères, vous pouvez exécuter :

show variables like '%char%';

La character_set_database vous donne le jeu de caractères de la base de données actuelle (schéma) dans laquelle vous vous trouvez. Le schéma et les tables sont créés par défaut avec le jeu de caractères spécifié dans le character_set_server , à moins qu'il ne soit spécifié explicitement dans le CREATE déclaration.

Le character_set_server peut être modifié dans le my.cnf fichier :

[mysqld]
character-set-server = utf8

De plus, les tables et les colonnes peuvent avoir leur propre jeu de caractères qui peut être différent de leur table ou schéma parent. Pour vérifier spécifiquement les valeurs de chaque table et colonne d'une base de données, consultez cette réponse :Comment puis-je voir quel jeu de caractères est une base de données/table/colonne MySQL ?

Si vous souhaitez modifier le jeu de caractères des tables et colonnes existantes, consultez cette réponse :Comment convertir un jeu de caractères et un classement de base de données MySQL complets en UTF-8 ?

Plus d'informations sur les jeux de caractères de connexion dans la documentation mysql .

Tout est réglé sur utf8, mais je vois toujours des caractères bizarres

Même si toutes les variables de jeux de caractères, les tables et les colonnes sont définies sur utf8 , il peut y avoir des cas où vous voyez des caractères bizarres sur votre écran. Par exemple, quelqu'un peut avoir écrit des caractères Unicode dans un utf8 colonne, via un client avec latin1 connexion (par exemple en exécutant mysql --default-character-set=latin1 ). Dans ce cas, vous devez vous connecter à la base de données avec le même jeu de caractères que celui dans lequel les valeurs ont été écrites. Vous pouvez également les récupérer et les réécrire en utilisant le bon encodage.

REMARQUE :Comme le soulignent les commentaires, le mysql utf8 l'encodage n'est pas une implémentation vraie et complète d'UTF-8. Si une implémentation complète d'UTF-8 est nécessaire, on peut utiliser le utf8mb4 jeu de caractères :

mysql --default-character-set=utf8mb4

Plus d'informations ici :Quelle est la différence entre les jeux de caractères utf8mb4 et utf8 dans MySQL ?