J'ai configuré /etc/mysql/my.cnf
manuellement pour utiliser utf8
. Voir ci-dessous:
[mysqld]
character-set-server=utf8
character-sets-dir=/usr/share/mysql/charsets
[mysql]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8
[mysqladmin]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8
[mysqlcheck]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8
[mysqldump]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8
[mysqlimport]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8
[mysqlshow]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8
[client]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8
Depuis la console:
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
Maintenant, pour l'application Web, j'ai utilisé les deux URL de connexion dans le context.xml
url="jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8"
url="jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&characterSetResults=utf8&connectionCollation=utf8_general_ci"
Ci-dessus ne fonctionne pas et me donne la suite pour l'application.
show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
Qu'est-ce qui ne va pas ici? Pourquoi il montre utf8mb4
au lieu utf8
?
Vous devrez peut-être faire avec les éléments suivants:
Changements dans MySQL Connector/J 5.1.13 (2010-06-24)
Le connecteur/J ne prend pas en charge utf8mb4 pour les serveurs 5.5.2 et plus récents.
Le connecteur/J détecte désormais automatiquement les serveurs configurés avec character_set_server = utf8mb4 ou traite le Java encodage utf-8 passé en utilisant characterEncoding = ... as utf8mb4 dans les SET NAMES = appels qu'il fait lors de l'établissement du connexion. (Bogue n ° 54175)
Pour votre application Web, veuillez essayer characterEncoding=utf8
au lieu de UTF-8. Cela a résolu mon problème de conteneur SonarQube.