web-dev-qa-db-fra.com

URL JDBC pour la configuration MySQL pour utiliser le codage de caractères utf8

Configuration de MySQL 5.6

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)

Configuration d'application

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?

12
Kowser

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)

17
wchiquito

Pour votre application Web, veuillez essayer characterEncoding=utf8 au lieu de UTF-8. Cela a résolu mon problème de conteneur SonarQube.

0
J Roysdon