Проблемы с unserialize и эмодзи

remano

Есть шаблоны текстов (ответы пользователям), оформляются сначала в массве. В них есть эмодзи. Далее массив обрабатываю:

  1. заменяю фигурные и квадратные скобки, двоеточие и двойные кавычки на спец.символы.
  2. А потомсериализую
  3. экранирую кавычки
  4. и сохраняю в MySQL.

Потом в работе:

  1. достаю из базы,
  2. убираю экранирование кавычек
  3. unserialize

И тут начинаются проблемы. Вылетает ошибка:

Код (Text):
  1. Notice: unserialize(): Error at offset 1009 of 5971 bytes in

Возился с этим несколько часов, этак часа 4 ушло :). Перевел даже таблицу в utf8mb4_unicode_ci, чтобы сохранялось правильно. Один фиг, ничего не работает.
Удалил из текста все эмодзи и unserialize стал работать.
Подскажите, пожалуйста, что не так, как обрабатывать эмодзи?

 

Дюран

Попробуйте без пунктов
3. экранирую кавычки

2. убираю экранирование кавычек

Не вижу смысла это делать, а вот бажок при 2 может закрасться

 

remano

Дело в эмодзи. Если их убрать, все кавычки нормально обрабатываются. При выборке из БД текст в переменную приходит без эмодзи, вместо них знаки вопросов. Но в самой БД эмодзи отображаются отображаются.

 

Drunkenmunky

remano

опередили :) да. Соединение было utf8

 

Drunkenmunky

Вам бы сразу дали правильный совет, если б вы сосредоточились на описании проблемы, а не своего её понимания.

 

Репозиторий

дык надоть utf8mb4 же :)

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *