Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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)

Hors ligne

#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.

Hors ligne

#5 Le 11/03/2020, à 17:44

Bob dit l'Âne

Re : Affichage lettres accentuées dans console sql

smile

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)

Hors ligne