Поддержка 4-х байтовых символов.

Михаил Проектов

Кто-нибудь сталкивался с проблемой сохранения отзывов, ответов и комментариев содержащий 4-х байтовые символы, например emoji?

В логах получаю ошибку:

Incorrect string value: '\xF0\x9F\x98\xA5' for column 'text' at row 1

Путем изменений в базе:

ALTER TABLE shop_product_reviews
  CHANGE COLUMN `text` `text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  CHANGE COLUMN `title` `title` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

и настроек mysql:

[mysqld]
character-set-server = utf8mb4 
[client] 
default-character-set = utf8mb4

Удалось добиться сохранения данных.

Но вывод по-прежнему не работает.
Выводятся вопросительные знаки.

Подскажите, стоит ли дальше копать или код системы не "переваривает" такие символы?

3 марта 2016
  • Syrnik.com 1 июля 2016 23:36

    попробуй в wa-config/db.php в данные подключения добавить

    'charset' => 'utf8mb4'

    если ты mysqli используешь

  • Syrnik.com 1 июля 2016 23:37

    еще вариант делать

    $model->exec('SET NAMES utf8mb4');
    $model->insert(/* ....*/)

    но это как-то не по феншую

  • Михаил Проектов 2 июля 2016 03:56

    Сергей, в яблочко!
    Спасибо!

Добавление новых комментариев к этой теме отключено.