remano
Есть шаблоны текстов (ответы пользователям), оформляются сначала в массве. В них есть эмодзи. Далее массив обрабатываю:
- заменяю фигурные и квадратные скобки, двоеточие и двойные кавычки на спец.символы.
- А потомсериализую
- экранирую кавычки
- и сохраняю в MySQL.
Потом в работе:
- достаю из базы,
- убираю экранирование кавычек
- unserialize
И тут начинаются проблемы. Вылетает ошибка:
Код (Text):
Notice: unserialize(): Error at offset 1009 of 5971 bytes inВозился с этим несколько часов, этак часа 4 ушло . Перевел даже таблицу в utf8mb4_unicode_ci, чтобы сохранялось правильно. Один фиг, ничего не работает.
Удалил из текста все эмодзи и unserialize стал работать.
Подскажите, пожалуйста, что не так, как обрабатывать эмодзи?
Дюран
Попробуйте без пунктов
3. экранирую кавычки
…
2. убираю экранирование кавычекНе вижу смысла это делать, а вот бажок при 2 может закрасться
remano
Дело в эмодзи. Если их убрать, все кавычки нормально обрабатываются. При выборке из БД текст в переменную приходит без эмодзи, вместо них знаки вопросов. Но в самой БД эмодзи отображаются отображаются.
Drunkenmunky
Кодировку соединения задаете?
https://www.php.net/manual/ru/mysqli.set-charset.php
https://www.php.net/manual/ru/mysqlinfo.concepts.charset.php
remano
опередили да. Соединение было utf8
Drunkenmunky
Вам бы сразу дали правильный совет, если б вы сосредоточились на описании проблемы, а не своего её понимания.
Репозиторий
дык надоть utf8mb4 же