Сохраните Emojis, используя MySQL соединитель 8 против сервера 5.6.22 - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть система, которая ранее использовала:

  • сервер mysql 5.6.22
  • соединитель mysql 5.1.47
  • для определенного столбца было установлено использование utf8mb4_unicode_ci

И я смог сохранить и прочитать смайлики в / из этого столбца таблицы, используя java.

Соединитель mysql теперь по какой-то причине обновлен до 8.0.12, исистема жалуется при сохранении смайликов,

Причина: java.sql.SQLException: Неверное значение строки: '\ xF0 \ x9F \ x90 \ x91' для столбца 'name' в строке 1

У кого-нибудь есть идеи, как это исправить?Большое спасибо.

Кстати, строка подключения JDBC, которую я использую, уже имеет useUnicode = true и characterEncoding = UTF-8

1 Ответ

0 голосов
/ 14 ноября 2018

Эта овца нуждается в utf8mb4, а не в utf8 во всем MySQL.Не только столбец, но и соединение.

Для Java:

Добавьте ?useUnicode=yes&characterEncoding=UTF-8 к URL-адресу JDBC (или, может быть, это = true и = utf8)

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=UTF-8" %>

compileJava.options.encoding = 'UTF-8'

<form method="post" action="/your/url/" accept-charset="UTF-8">

Для использования 4-байтового UTF8 с Connector / J настройте сервер MySQL на character_set_server=utf8mb4.Затем Connector / J будет использовать эту настройку до тех пор, пока символьная кодировка не будет установлена ​​в строке подключения.Это эквивалентно автоматическому определению набора символов.

...