Всем привет!
Понадобилось вставить в некоторых материалах Эмодзи и столкнулся с интересной проблемой.
Сначала вставлял только звёздочки ⭐, и никаких проблем не было. До тех пор, пока я не вставил эмодзи, по моему, огня 🔥. Просто сохранил ноду и закрыл страницу.
Через несколько дней мне жалуются, мол куда пропал текст статьи. Я смотрю, и правда, есть начало статьи, пара предложений, а потом после какого-то слова пусто. Сначала подумал, что кто-то другой с доступом отредактировал статью и случайно удалил часть её.
Однако, я снова добавил этот огонь и увидел, что пропадает и сам огонь и весь текст после него. Я удивился. Вставил вместо огня звезду и всё было ок. Попробовал вставлять не сам символ копированием, а его html-код. Результат был положительный, но только при первом сохранении. При попытке редактирования текста html-код эмодзи преобразовывался в сам смайлик и при просмотре статьи в редакторе ckeditor и при просмотре кода нажав кнопку "Источник". Можно даже поиграться. Вставить эмодзи кодом, нажать "Источник" 2 раза и увидишь уже не код а сам смайлик.
Это происходит практически со всеми эмодзи, кроме звёзд и зеленых галочек.
Почему так происходит, я так и не понял.
- Пробовал копаться в настройках форматов ввода, чтобы не удалялись ни какие html-коды, пробовал сохранять статью c форматом ввода "PHP code".
- Пробовал настраивать ckeditor, чтобы и он не удалял ничего. Но, ничего не помогает.
- Пробовал установить для ckeditor плагин emoji, но ничего не вышло, сам редактор куда-то пропадает после активации плагина.
В общем, ничего не помогло. Есть ли у вас такая же проблема и как удалось решить?
Комментарии
Чтобы хранить эмодзи в базе - у неё должна быть кодировка utf8mb4
Вряд ли это возможно в D6
Я согласен на то, чтобы хранить просто html-код, а не сами эмодзи. Как заставить ckeditor не преобразовывать код с эмодзи? Или это не его вина вообще?
Контент хранится в БД. Чтобы сохранялись эмодзи, необходима кодировка utf8mb4
Ckeditor тут вообще непричем.
Эмодзи можно по разному вставлять в текст. Можно непосредственно сам смайл в кодировке utf8mb4, а можно html-кодами, типа 🔥 (& # 128293;)
И если поле в друпале без ckeditor, а просто текстовое поле, то коды отлично сохраняются и работают.
А вот ckeditor преобразует код в смайл, который в последствии не может сохранить в базе. Мы ведь, чтобы вставить эмодзи кодом нажимаем на "Источник" и вставляем туда код & # 128293;, затем отжимаем "Источник" и код уже преобразовался в эмодзи.