Символы Юникода UTF-8 в MySQL 5.7 и MySQL 8

Недавно мы прошли миграцию с MySQL 5.7 на MySQL 8. В MySQL 5.7 мы просто добавили «useUnicode=true» в строку подключения, чтобы получить функциональные символы Unicode. В MySQL 8 мы продолжаем сталкиваться с исключениями из-за символов юникода. Мы используем Java для серверной части. Пример:

Incorrect string value: '\xC2\x80\xC2\x99t ...' for column 'subject' at row 1 

Может кто-нибудь пролить некоторый свет на это?

Я не помню, чтобы когда-либо видел какие-либо настройки useUnicode в MySQL. Согласно очень быстрому поиску в Google, это может быть вещью JDBC. Вы используете Java?

Álvaro González 18.02.2019 16:25

Да, мы используем Java для серверной части

Gerrit Brink 18.02.2019 16:37

Пожалуйста, редактировать ваш вопрос, чтобы включить результаты SHOW CREATE TABLE tablename и SELECT * FROM tablename LIMIT 1 либо для фактической таблицы, либо для небольшой таблицы минимальный воспроизводимый пример, которая может воспроизвести проблему.

Gord Thompson 18.02.2019 18:47
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
163
1

Ответы 1

Попробуйте запрос, приведенный ниже, он обновит поддержку Unicode. Раньше он работал с более ранними версиями MySQL, я не уверен насчет MySQL 8.

SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;

Также проверьте character-set-server = utf8mb4 в my.cnf и useUnicode=true в вашем соединении JDBC.

Другие вопросы по теме