Подтвердить что ты не робот

URL-адрес JDBC для конфигурации MySQL для использования кодировки символов utf8

MySQL 5.6 Конфигурация

Я настроил /etc/mysql/my.cnf вручную, чтобы использовать utf8. См. Ниже:

[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

Из консоли:

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)

Конфигурация приложения

Теперь для веб-приложения я использовал оба этих URL-адреса соединения в Tomcat 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"

Выше не работает и дает мне следующее для приложения.

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/ |
+--------------------------+----------------------------+

Что здесь может быть неправильным? Почему он показывает utf8mb4 вместо utf8?

4b9b3361

Ответ 1

Возможно, вам придется сделать следующее:

Изменения в MySQL Connector/J 5.1.13 (2010-06-24)

  • Коннектор/J не поддерживает utf8mb4 для серверов 5.5.2 и новее.

    Коннектор/J теперь автоматически обнаруживает серверы, настроенные с помощью character_set_server = utf8mb4, или обрабатывает Java-кодировку utf-8, переданную с использованием characterEncoding =... как utf8mb4 в SET NAMES = вызывает его при установлении соединения. (Ошибка № 54175)

Ответ 2

Пожалуйста, попробуйте characterEncoding = utf8 вместо UTF-8. Это решило мою проблему с контейнером SonarQube.