предисловие
Сегодня при оформлении формы обратной связи открытого проекта столкнулся с проблемой, что не вставляется выражение эмодзи, нашел много решений в интернете, и ответы были самые разные, но так и не нашел Неплохо.
После некоторых метаний я, наконец, успешно вставил выражения эмодзи. В этой статье я поделюсь с вами своим процессом реализации. Заинтересованные разработчики могут прочитать эту статью.
написать впереди
Мой сервер - это система Mac, mysql установлен с помощью brew, и расположение его файла конфигурации может отличаться для Windows/Linux, в зависимости от реальной ситуации.
Давайте сначала посмотрим на его сообщение об ошибке:
chat_system> UPDATE chat_system.feedback t SET t.comments = '反馈信息测试😂' WHERE t.id = 1
[2020-12-01 21:36:08] [HY000][1366] Incorrect string value: '\xF0\x9F\x98\x82' for column 'comments' at row 1
[2020-12-01 21:36:08] [HY000][1366] Incorrect string value: '\xF0\x9F\x98\x82' for column 'comments' at row 1
Реализовать идеи
Поскольку база данных по умолчаниюUTF-8
Формат кодировки, обычная строка занимает 3 байта, а выражение занимает 4 байта, на данный момент UTF-8 недостаточно, нужно использоватьutf8mb4
Набор символов может решить эту проблему.
Примечание: для набора символов utf8mb4 требуется версия базы данных выше 5.5.3.
Итак, что мы собираемся сделать, это следующее:
- Измените файл конфигурации mysql и установите его формат кодировки.
- Изменить кодировку набора символов базы данных
- Изменить кодировку набора символов таблицы базы данных
Процесс реализации
Порядок, в котором mysql считывает конфигурацию по умолчанию, следующий:/etc/my.cnf
,/etc/mysql/my.cnf
,/usr/local/etc/my.cnf
,~/.my.cnf
, если эти файлы конфигурации не существуют в соответствующем каталоге, вам необходимо создать новый.
- Изменить файл конфигурации базы данных
my.cnf
, мой файл находится по адресу:/usr/local/etc
ниже добавьте следующий код
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'
character-set-client-handshake = false
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
- Измените кодировку набора символов базы данных и выполните следующую инструкцию SQL после входа в MySQL.
# 设置数据库字符集编码,chat_system为数据库名称,根据自己的实际情况而来
ALTER DATABASE chat_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- Измените кодировку набора символов таблицы базы данных и выполните следующую инструкцию SQL после входа в MySQL.
# 设置数据库表字符集编码,chat_system.feedback_comment_reply为我的数据库下对应的表名称,根据自己的实际情况而来
ALTER TABLE chat_system.feedback_comment_reply CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
После выполнения вышеуказанных операций давайте посмотрим, успешно ли выполнена модификация.После входа в mysql выполните следующую инструкцию sql.
SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_name LIKE 'collation%';
Если отображается подчиненная информация, это означает, что мы завершили модификацию.
прецедент
Давайте вставим эмодзи туда и обратно, чтобы проверить это:
UPDATE chat_system.feedback t SET t.comments = '反馈信息测试😂' WHERE t.id = 1;
Как показано ниже, ошибки нет и вставка прошла успешно.
мы используемdataGrap
Глядя на данные в таблице базы данных ниже, как показано ниже, он показывает?
, должно быть так, что программа не может его распознать.
Чтобы быть разумным, он должен быть успешно вставлен, Мы попробовали это с интерфейсом запроса почтальона, и он успешно отобразился 😄.
напиши в конце
- Если в статье есть ошибки, исправьте их в комментариях, если статья вам поможет, ставьте лайк и подписывайтесь 😊
- Эта статья была впервые опубликована на Наггетс, перепечатка без разрешения запрещена 💌