Skip to content

Вставка Emoji

Не работают смайлики эмодзи на форуме, при добавлении с телефона и предварительном просмотре все нормально, но при отправке сообщения все пусто и более того, весь текст написанный после них тоже пропадает, может проблема в кодировке? В то же время видел форум на версии 2.х с работающими смайлами <_<

Featured Replies

  • Author

Тест ipbskins с телефона

 

Тест ipbskins с телефона

 

Хм, тоже не работает..

В стандартной кодировки utf8 один символ может кодироватся максимум из 3-х байтов, символ эмодзи занимает четыре байта. Для них нужно переходить на расширеный utf8mb4.

  • Author

В стандартной кодировки utf8 один символ может кодироватся максимум из 3-х байтов, символ эмодзи занимает четыре байта. Для них нужно переходить на расширеный utf8mb4.

 

Трудно ли на него перейти своими силами? :) И чем это может грозить форуму, глюки и пр. ?

перекодировать базу в utf8mb4

 

 

utf8mb4 - набор символов, используемый для хранения 4 байта в MySQL, внедрён в 2010 году начиная с версии 5.5.3. Главное отличие utf8mb4 от utf8 в том, что utf8mb4 задействует более полные возможности кодировки UTF8, позволяя поддерживать все языки и специальные символы, не поддерживающие utf8 (например японский язык или смайлики из ios - emoji).

 

Однако, как можно догадаться, если utf8mb4 использует для хранения 1 символа 4 байта, то база данных может увеличиться в размере, если сравнивать с точно такой же базой данных в utf8. В наше время немного увеличенный размер базы данных не является существенно проблему, по этому, если вы стоите перед выбором использовать utf8 или utf8mb4 набор символов - используйте utf8mb4.

Будет грозить проблемами с индексами. Если тип таблиц myisam - максимальный размер индекса в нем составляет 1000 байт, поэтому при переходе на utf8mb4 индексы которые имеют размер в 255 символов нужно заменить на 250 чтобы уместится в 1000 байт. Если тип таблиц innodb, нужно увеличить максимальный размер индекса до 1024, по умолчанию он составляет 767 байт.

 

Prefix support and lengths of prefixes (where supported) are storage engine dependent. For example, a prefix can be up to 767 bytes long for InnoDB tables or 3072 bytes if the innodb_large_prefix option is enabled. For MyISAM tables, the prefix limit is 1000 bytes.

  • Author

Спасибо, @siv1987, да не хочется из-за этого что-то сломать :) В 4 версии я тоже так понимаю Эмодзи не вставишь с телефона? Интересно, почему не переделывают если пишут, что размер БД не сильно увеличится? Кстати, возможно это как то связано с пустыми сообщениями - http://ipbskins.ru/forum/topic14085.html

Интересно, почему не переделывают если пишут, что размер БД не сильно увеличится?

Потому что она не является стандартной кодировкой и ее поддержка появилась в mysql 5.5.3. Кто хочет перейти на другие кодировки пусть себе переделывают как хотят.

  • Author

Понял, лучше не стоит менять :D Кстати, я что-то не подумав написал, в 4 версии это и не нужно особо, там доступен редактор.

  • Author

Вот и на американском форуме не рекомендуют менять кодировку.

 

10894577m.png

  • 3 years later...
  • Author

Возможно ли сделать, чтобы не пропадал текст после эмоджи? Интересное наблюдение: при отправке быстрого ответа не отображаются только смайлы эмоджи слова не пропадают, при публикации через расширенный редактор пропадают слова после эмоджи :( В мобильной версии везде (даже в быстром ответе) после эмоджи пропадают слова, думаю это связано с Аяксом.

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.