J'ai une table de base de données qui contient des chaînes suédoises/norvégiennes.
Lorsque je recherche des données, j'obtiens une sortie comme celle-ci:
set names latin1;
+-----------------------------------+
| name |
+-----------------------------------+
| Kid Interi##### |
| Bwg Homes |
| If Skadef####kring |
| Jangaard Export |
| Nordisk Film |
+-----------------------------------+
Pas de wifi set names utf8;
afin de voir les caractères avec leur bon encodage, puis le formatage de la sortie tabulaire de la ligne de commande MySQL se casse.
set names utf8;
+-----------------------------------+
| name |
+-----------------------------------+
| Kid Interiør |
| Bwg Homes |
| If Skadeförsäkring |
| Jangaard Export |
| Nordisk Film |
+-----------------------------------+
Ce n'est pas un gros problème mais cela rend la sortie un peu plus difficile à lire. Quelqu'un sait-il comment conserver la mise en forme tabulaire intacte?
Démarrez le client avec l'option --default-character-set=utf8
:
mysql --default-character-set=utf8
Vous pouvez définir cela par défaut dans le /etc/mysql/my.cnf
fichier.
[mysql]
default-character-set=utf8
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%';
Le character_set_database
vous donne le jeu de caractères de la base de données (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 character_set_server
, sauf si cela est spécifié explicitement dans l'instruction CREATE
.
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, voyez 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 entiers en UTF-8?
Plus d'informations sur les jeux de caractères de connexion dans la documentation mysql .
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 étranges 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=utf8
). Dans ce cas, vous devez vous connecter à la base de données avec le même jeu de caractères que les valeurs ont été écrites. Vous pouvez également les récupérer et les réécrire via l'encodage correct.
[~ # ~] note [~ # ~] : Comme le soulignent les commentaires, le myslq utf8
L'encodage n'est pas une implémentation vraie et complète d'UTF-8. Si une implémentation complète de UTF-8 est nécessaire, on peut utiliser le utf8mb4
charset:
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?