Проблема кодировки ZP - MySQL и эмодзи

blamingas

Client
Регистрация
14.05.2021
Сообщения
114
Благодарностей
45
Баллы
28
Необходимо добавить в базу даных mysql строку, содержащую эмодзи. Экшн содежит код:

[ОТРЕДАКТИРОВАНО: данный форум тоже съедает эмодзи и они не вставляются - в коде ниже в значении Post_Text должно присутствовать эмодзи "сердце"]

UPDATE `my_database_table`
SET `Post_Text` = "Женские ботинки"
WHERE `Articul` = "1056"

Но Зенка ругается:
"Выполнение действия Db Incorrect string value: '\xF0\x9F\x92\x97\xD0\x96...' for column 'Post_text' at row 1225"

Попробовал добавить руками в базу через phpmyadmin - ругалось тоже, и причина понятна - 4-байтные символы, вместо дефолтных 3х-байтовых. Нашел решение поменять в базе кодировку для этой колонки с дефолтной utf8_general_ci на utf8mb4_general_ci - без проблем стало вставляться как руками, также стал работать вышеупомянутый код если его использовать в phpmyadmin.

Но проблема в том, что если добавлять через кубик Зенки "Работа с базами данных", она по-прежнему выдаёт эту ошибку. Я не сильно программист, но прочитал в интернетах, что помимо добавления данных в базу в нужной кодировке, необходимо чтобы и само общение с базой происходило в нужной кодировке.
И вот складывается ощущение, что Зенка общается с базой в 3-байтовой utf8.

Вопрос:
Как заставить ZP передавать данные в базу в utf8mb4 ?
Или может есть какие-то альтернативные способы добавления данных с эмодзи в базу.
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 454
Баллы
113
Попробуйте в строке подключения указать дополнительный параметр, например
characterset=utf8 или characterset=utf8mb4
Получится что-то вроде этого:
server=host;user id=login;password=pass;database=name;persistsecurityinfo=True;characterset=utf8

Можно ещё попробовать параметры использовать, вдруг это сработает:

99546
 

blamingas

Client
Регистрация
14.05.2021
Сообщения
114
Благодарностей
45
Баллы
28
Попробуйте в строке подключения указать дополнительный параметр, например
characterset=utf8 или characterset=utf8mb4
Получится что-то вроде этого:
server=host;user id=login;password=pass;database=name;persistsecurityinfo=True;characterset=utf8
огромное спасибо! Получилось, добавив characterset=utf8mb4
В строке подключения у меня всегда висит давным давно созданная глобальная переменная с данными авторизации в бд, мигрирующая из проекта в проект - совсем забыл про существование доп.параметров там.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)