Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.05.2018, 15:40
|
|||
|---|---|---|---|
MariaDb ошибка 1366 неверная кодировка строки при записи в БД .. и? |
|||
|
#18+
Здравствуйте, всем. Сегодня столкнулся с такой проблемой: при записи в JSON-формате сырых данных из API vk.com для целей тестирования, обнаружил такое сообщение. Выяснил что надо чтобы кодировка поля была не utf8, а теперь модно utf8mb4, сделал alter table и поменял кодировку, но ошибка осталась .. что делать? Это JSON-строка, оригинал того, что пробую воткнуть в БД: {"type":"message_reply","object":{"id":38753,"date":1526533976,"out":1,"user_id":218070853,"read_state":1,"title":"","body":"Елизавета добрый день☀☀☀подали заявление?💖","random_id"emoji":1,"from_id":62405192},"group_id":71952396,"secret":"93069a43842d69eb314b743b82905a7b"} 1. Не лезет в БД ни в таком виде (с html спецсимволами) ни после html_entity_decode() из PHP.. 2. PHP Yii2 это чудо вообще вешается на содержимое такого POST-запроса из API vk.com .. выдает ошибку парсинга тела сообщения .. нашел, исправил. При этом json_decode() вполне нормально переваривает такой текст. Проверил отдельно. Как это победить? Помогайте.. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.05.2018, 15:41
|
|||
|---|---|---|---|
MariaDb ошибка 1366 неверная кодировка строки при записи в БД .. и? |
|||
|
#18+
Arhat109, Код: html 1. Наверное так тут надо .. подзабыл уже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.05.2018, 17:39
|
|||
|---|---|---|---|
MariaDb ошибка 1366 неверная кодировка строки при записи в БД .. и? |
|||
|
#18+
Arhat109, Пасибки. Кое что стало понятно. Это смайлики Emoji вконтактника и похоже что они и не лезут в юникод. Однако, осталось непонятным: почему PHP-шная 7.2 json_decode() их спокойно перекодирует в юникод, а в MariaDB 10.2 они не лезут. И ещё почему они не записываются как html спец.символы без перекодировки в базу прямо текстом ...; тоже ещё не разобрался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.05.2018, 20:49
|
|||
|---|---|---|---|
MariaDb ошибка 1366 неверная кодировка строки при записи в БД .. и? |
|||
|
#18+
Arhat109Это смайлики Emoji вконтактника и похоже что они и не лезут в юникод.Нуууу... Вы то как-то скопипастили их в сообщение форума. И веб-браузер что-то нарисовал. Или это левый код? Arhat109Однако, осталось непонятным: почему PHP-шная 7.2 json_decode() их спокойно перекодирует в юникод, а в MariaDB 10.2 они не лезут.Скорее, PHP не перекодирует, а воспринимает последовательность байтов, как валидный юникод. Лезут или не лезут - это уровня детского сада... Кроме Вас никто в точности не знает ни структуры таблицы, ни настроек соединения, ни кода, который выполняется, ни сообщений об ошибках. ПокАжите тестовый пример с реальными данными - можно говорить конкретно. А так, только предположить можно, что, если поле таблицы гарантировано в utf8mb4, то кодировка соединения с СУБД осталась старой. Arhat109И ещё почему они не записываются как html спец.символы без перекодировки в базу прямо текстом ...; тоже ещё не разобрался.А почему они должны преобразовываться именно в html-сущности, а не в восьмеричное или двоичное представление числа, к примеру? ;-) Тоже веселый результат на выходе получится. Что отправляете в базу - то и пишется и потом возвращается. Или у Вас другая логика на этот счет? ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.05.2018, 05:26
|
|||
|---|---|---|---|
MariaDb ошибка 1366 неверная кодировка строки при записи в БД .. и? |
|||
|
#18+
vkle, Пасибки, а вот это скорее всего и есть причина. Соединение с базой создает Yii2 .. скорее всего так оно и есть, ща проверю. Не подумал за этот момент. Чего передаю в БД - это в чистом виде строка из второго сообщения. Пробовал над этой строкой выполнить html_entity_decode() перед записью в БД тоже. На второй вариант вылазит эта ошибка 1366. На первый вроде тоже, но уже не уверен, перепроверю. Таблица примитивна: имеет первичный автоинкрементный ключик и текстовое поле в кодировке utf8mb4. Код конечно же на Yii2 с его ActiveRecord .. кстати надо попробовать запихать в тбл прямым кодом, не делал... за ночь родилось предположение что Yii2 пытается самостоятельно что-то наворотить со строкой, хотя его никто и не просит. Проверю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1829843]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 142ms |

| 0 / 0 |
