#1 Le 11/03/2020, à 11:51
- Bob dit l'Âne
Affichage lettres accentuées dans console sql
Bonjour,
Exposé du problème:
Impossible de saisir et d'afficher des lettres accentuées dans ma console sql:
Exemple : quand je veux afficher 'clé_secrète', ça me fait 'cl_secrte'.
mysql> SELECT AES_ENCRYPT('Bonjour','secrte_cl');
+------------------------------------+
| AES_ENCRYPT('Bonjour','secrte_cl') |
+------------------------------------+
| 0" % |
+------------------------------------+
1 row in set (0.00 sec)
... et pourtant ça s'affiche très bien dans le terminal
mysql>
jean-yves@jeanyves-G3-3779:~$ echo "é - è - ê - ç - à - â - ù"
é - è - ê - ç - à - â - ù
jean-yves@jeanyves-G3-3779:~$ echo "ma clé secrète"
ma clé secrète
Si quelqu'un avait une piste ?
DELL G3 17 3779 - 17,3" FHD IPS - Core i5 8300H - RAM 8Go - 1To DD +128Go SSD - NVIDIA GTX 1050 Ti 4 Go
Ubuntu 22.04.3 LTS Home séparé et partition données
Akoya MD 97860 P7612 Core 2 Duo T6500 NVIDIA Realtek RTL8191SE Wireless LAN GeForce G210M
Ubuntu 16.04 LTS (« Xenial Xerus ») + NFS
Hors ligne
#2 Le 11/03/2020, à 14:11
- bruno
Re : Affichage lettres accentuées dans console sql
Bonjour,
C'est sûrement un problème de jeu de caractères par défaut. De nos jours on met tout en utf-8 pour éviter ce genre de blague :
default-character-set = utf8
dans la configuration globale pour le client et le serveur.
Pour voir les jeux de caractères utilisés globalement :
show variables like 'char%';
Pour voir celui de la base courante :
show variables like "character_set_database";
ou show variables like "collation_database";
Pour voir ceux des tables de la base courante :
show table status;
Dernière modification par bruno (Le 11/03/2020, à 14:12)
#3 Le 11/03/2020, à 15:59
- Bob dit l'Âne
Re : Affichage lettres accentuées dans console sql
Bonjour bruno pour ton intervention
jean-yves@jeanyves-G3-3779:~$ sudo mysql -u root
[sudo] Mot de passe de jean-yves :
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.29-0ubuntu0.18.04.1 (Ubuntu)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql> show variables like "character_set_database";
+------------------------+---------+
| Variable_name | Value |
+------------------------+---------+
| character_set_database | utf8mb4 |
+------------------------+---------+
1 row in set (0.01 sec)
mysql> show variables like "collation_database";
+--------------------+--------------------+
| Variable_name | Value |
+--------------------+--------------------+
| collation_database | utf8mb4_unicode_ci |
+--------------------+--------------------+
1 row in set (0.00 sec)
mysql>
Je pensais pourtant avoir fait le nécessaire.
DELL G3 17 3779 - 17,3" FHD IPS - Core i5 8300H - RAM 8Go - 1To DD +128Go SSD - NVIDIA GTX 1050 Ti 4 Go
Ubuntu 22.04.3 LTS Home séparé et partition données
Akoya MD 97860 P7612 Core 2 Duo T6500 NVIDIA Realtek RTL8191SE Wireless LAN GeForce G210M
Ubuntu 16.04 LTS (« Xenial Xerus ») + NFS
Hors ligne
#4 Le 11/03/2020, à 16:24
- bruno
Re : Affichage lettres accentuées dans console sql
Ok tout est correct du côté de mysql.
Le problème vient peut être du terminal, quel est le retour de :
locale
Si le terminal est aussi en utf-8, c'est très étrange…
Il faut voir si le problème persiste après redémarrage du service mysql et ouverture d'un nouveau terminal.
#5 Le 11/03/2020, à 17:44
- Bob dit l'Âne
Re : Affichage lettres accentuées dans console sql
jean-yves@jeanyves-G3-3779:~$ locale
LANG=fr_FR.UTF-8
LANGUAGE=
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=
Bon, je pense que je viens de trouver.
J'avais fait une modification dans le fichier de configuration /etc/mysql/mysql.conf.d/mysqld.cnf
pour passer d'un encodage en 24 bits à un encodage en 32 bits
(cf ce tuto : https://www.youtube.com/watch?v=bkrNOyo … Qg&index=3
et j'avais ajouté les lignes suivantes :
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[mysql]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4
Je viens de les commenter et de reloader le service.
Ca a l'air de marcher maintenant.
Je tiens au courant de la suite.
DELL G3 17 3779 - 17,3" FHD IPS - Core i5 8300H - RAM 8Go - 1To DD +128Go SSD - NVIDIA GTX 1050 Ti 4 Go
Ubuntu 22.04.3 LTS Home séparé et partition données
Akoya MD 97860 P7612 Core 2 Duo T6500 NVIDIA Realtek RTL8191SE Wireless LAN GeForce G210M
Ubuntu 16.04 LTS (« Xenial Xerus ») + NFS
Hors ligne
#6 Le 11/03/2020, à 18:12
- bruno
Re : Affichage lettres accentuées dans console sql
J'ai déjà fait cette manipulation sur deux instances MySQL (MariaDB en fait, mais cela ne change rien dans ce cas) et je n'ai pas eu de soucis.
Par contre pour l’interclassent (collation) j'ai :
collation-server = utf8mb4_general_ci
À vérifier dans une console mysql avec par exemple :
show charset;
EDIT : je confirme que c'est bien utf8mb4_general_ci et non utf8mb4_unicode_ci , voir la doc de MySQL 5.7 :https://dev.mysql.com/doc/refman/5.7/en/charset-charsets.html
Dernière modification par bruno (Le 11/03/2020, à 18:16)