• Вконтакте
  • Instagram
+375 (29) 733-89-83
+375 (44) 755 2072
Заказать звонок
Red Media
Компания
  • О компании
  • Отзывы
  • Наши достижения
  • Партнеры
Услуги
  • Разрабатываем
    • Корпоративные сайты
    • Интернет-магазины
    • Установка шаблонных решений на 1С-Битрикс
  • Интеграции
    • Настройка интеграции CMS 1C-Битрикс с продуктами 1С (Предприятие, Бухгалтерия и т.д.)
    • Внедрение CRM Битрикс24
    • Обучение персонала самостоятельной работе в Битрикс24
    • Интеграция сайтов на Битрикс с сервисом Zoomos.by
  • Брендинг
    • Разработка логотипа
    • Разработка брендбука
    • Фирменный стиль
  • Дизайн
    • Web дизайн
    • Дизайн полиграфии
Портфолио
  • Сайты
  • Логотипы
  • Брендбук и фирменный стиль
  • Веб-Дизайн
Новости
Блог
Контакты
Ещё
    Red Media
    Компания
    • О компании
    • Отзывы
    • Наши достижения
    • Партнеры
    Услуги
    • Разрабатываем
      • Корпоративные сайты
      • Интернет-магазины
      • Установка шаблонных решений на 1С-Битрикс
    • Интеграции
      • Настройка интеграции CMS 1C-Битрикс с продуктами 1С (Предприятие, Бухгалтерия и т.д.)
      • Внедрение CRM Битрикс24
      • Обучение персонала самостоятельной работе в Битрикс24
      • Интеграция сайтов на Битрикс с сервисом Zoomos.by
    • Брендинг
      • Разработка логотипа
      • Разработка брендбука
      • Фирменный стиль
    • Дизайн
      • Web дизайн
      • Дизайн полиграфии
    Портфолио
    • Сайты
    • Логотипы
    • Брендбук и фирменный стиль
    • Веб-Дизайн
    Новости
    Блог
    Контакты
    Ещё
      Red Media
      • Компания
        • Назад
        • Компания
        • О компании
        • Отзывы
        • Наши достижения
        • Партнеры
      • Услуги
        • Назад
        • Услуги
        • Разрабатываем
          • Назад
          • Разрабатываем
          • Корпоративные сайты
          • Интернет-магазины
          • Установка шаблонных решений на 1С-Битрикс
        • Интеграции
          • Назад
          • Интеграции
          • Настройка интеграции CMS 1C-Битрикс с продуктами 1С (Предприятие, Бухгалтерия и т.д.)
          • Внедрение CRM Битрикс24
          • Обучение персонала самостоятельной работе в Битрикс24
          • Интеграция сайтов на Битрикс с сервисом Zoomos.by
        • Брендинг
          • Назад
          • Брендинг
          • Разработка логотипа
          • Разработка брендбука
          • Фирменный стиль
        • Дизайн
          • Назад
          • Дизайн
          • Web дизайн
          • Дизайн полиграфии
      • Портфолио
        • Назад
        • Портфолио
        • Сайты
        • Логотипы
        • Брендбук и фирменный стиль
        • Веб-Дизайн
      • Новости
      • Блог
      • Контакты
      • +375 (29) 733-89-83
        • Назад
        • Обратная связь
        • +375 (29) 733-89-83
        • +375 (44) 755 2072
        • Заказать звонок
      Будьте на связи
      info@redmedia.by
      • Вконтакте
      • Instagram

      Битрикс и Emoji (utf8mb4)

      • От сложных интернет-проектов до разработки фирменного стиля компаний и логотипов
      • Блог
      • Битрикс и Emoji (utf8mb4)
      Битрикс и Emoji (utf8mb4)
      В одном из наших проектов на 1С-Битрикс, который тесно связан с генерацией контента пользователями, появилась потребность в поддержке эмодзи. Обычно для записи содержимого сайта хватает и трехбайтной кодировки utf8, но для хранения Emoji потребуется четырехбайтная utf8mb4 (UTF-8 Multibyte 4), которая доступна в MySQL 5.5.3+ и более новых версиях.


      В одном из наших проектов на 1С-Битрикс, который тесно связан с генерацией контента пользователями, появилась потребность в поддержке эмодзи. Обычно для записи содержимого сайта хватает и трехбайтной кодировки utf8, но для хранения Emoji потребуется четырехбайтная utf8mb4 (UTF-8 Multibyte 4), которая доступна в MySQL 5.5.3+ и более новых версиях.

      Немного о кодировках и представлениях

      Кодировка (character set) — это способ описания набора символов. Например, UTF-8, ASCII, KOI8-R, CP1251. Представление (collation) — способ описания порядка букв в кодировках, который используется для сортировок. Рассмотрим основные отличия представлений.

      В utf8_bin всё регистрозависимо. Символ 'A' не равен символу 'a' при поиске, а сортировка происходит в порядке следования в таблице символов для данной кодировки.

      Представления, названия которых оканчиваются на _ci (case-insensitive), не увидят разницы между 'aAA' и 'aaa' при поиске и различаются только способами сортировки. 

      utf8_general_ci работает быстрее, потому что при сортировке не учитываются особенности в порядке букв в некоторых языках. Например, ÀÁÅåāă = A или ü = U.uft8_unicode_ci — чуть медленнее, но сортировки будут правильные во всех языках. Например, ß (эсцет немецкий) будет располагаться рядом с ss.

      К сожалению, в документации написано что utf8mb4 кодировка в Битриксе не поддерживается.

      Но давайте попробуем сконвертировать БД из utf8 в utf8mb4.

      Кодировка существующей базы

      Это самое сложное, сделать конвертацию действующей базы на рабочем проекте, просто поменять сравнение у базы и таблиц будет недостаточно, еще нужно задать сравнение и кодировку всем полям таблицы типа: char, varchar, tinytext, text, mediumtext, longtext, enum, set, json

      Для автоматизации конвертации всей базы есть скрипт busconvert.php, его нужно залить на сайт на Битриксе, в любое место, главное открыть его в браузере и нажать кнопку Начать конвертацию

      BUSCONVERT v1.0.0

      Сначала скрипт выводит текущие значения кодировки и сравнения до конвертации.

      После нажатия на кнопку Начать конвертацию скрипт начнет конвертировать всю текущую базу сайта.

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

      Screenshot_1.png

      По окончании работы выводит результаты После конвертации и Лог конвертации, а также количество затронутых таблиц  и новую кодировку базы, если все прошло успешно.

      Screenshot_2.png

      В таблице лога выводится новая кодировка и все SQL-запросы, которые совершал скрипт над данными полей каждой таблицы.

      Здесь в запросах заменяем utf8 на utf8mb4 После успешной конвертации остается поменять настройки соединения с базой в 2-х файлах.

      //bitrix/php_interface/after_connect_d7.php

      $connection = \Bitrix\Main\Application::getConnection();
      $connection->queryExecute("SET NAMES 'utf8mb4'");
      $connection->queryExecute('SET collation_connection = "utf8mb4_unicode_ci"');
       

      //bitrix/php_interface/after_connect.php

      $DB->Query("SET NAMES 'utf8mb4'");
      $DB->Query('SET collation_connection = "utf8mb4_unicode_ci"');
       

      А также в файле /bitrix/.settings.php

      'utf_mode' =>
      array(
      'value' => true,
      'readonly' => true,
      ),
      

      Еще желательно сбросить весь кэш сайта, либо в админке, либо удалив вот эти папки с диска.

      /bitrix/cache
      /bitrix/managed_cache
      /bitrix/stack_cache
      /bitrix/html_pages/example.com

      Результат

      Теперь вы можете использовать эмодзи в своих проектах. 


      Поделиться
      Назад к списку
      • Комментарии
      Загрузка комментариев...
      Категории
      • 1С-Битрикс - Разработка5
      • Бизнес-советы5
      • Дизайн и брендинг11
      • Повышение продаж1
      • Управление проектами1
      Это интересно
      • Как сделать редирект с http на https на BitrixVM
        Как сделать редирект с http на https на BitrixVM
        18 марта 2022
      • Ошибка авторизации! Ваша сессия истекла, повторите попытку авторизации.
        Ошибка авторизации! Ваша сессия истекла, повторите попытку авторизации.
        30 сентября 2020
      • Ошибки при отправке системных почтовых сообщений
        Ошибки при отправке системных почтовых сообщений
        29 октября 2019
      • Битрикс. Правильное подключение файлов js и css в шаблоне
        Битрикс. Правильное подключение файлов js и css в шаблоне
        7 августа 2019
      © 2023 Все права защищены.

      Разработано в Red Media

      Red Media

      Участник проекта CMS Magazine
      Наши контакты


      +375 (29) 733-89-83
      info@redmedia.by
      Оставайтесь на связи
      • Вконтакте
      • Instagram