Убеждаемся, что кодировка базы данных — utf8mb4, иначе проблемы с эмодзи и спецсимволами
Дата публикации: 24.06.2026

Убеждаемся, что кодировка базы данных — utf8mb4, иначе проблемы с эмодзи и спецсимволами

Хочу себе такие же кнопки
ccb9a536

Что вы получите от этого урока

Вы узнаете, почему utf8mb4 — это «единственная» кодировка, которая гарантирует корректное хранение эмодзи и всех спецсимволов в базе Битрикс, как быстро проверить, что ваша БД уже использует её, и какие шаги нужно выполнить, если это не так. После практики ваш магазин будет «говорить» на любом языке без глюков, а вы избежите странных багов, связанных с выводом символов в админке и на сайте.


Почему именно utf8mb4?

Кодировка Количество байтов на символ Поддержка эмодзи Пример «плохих» символов
utf8 до 3 ❌ (эмодзи требуют 4) 😀 → «?», 🧩 → «?»
utf8mb4 до 4 любые Unicode‑символы
latin1 1 кириллица, китайские иероглифы
  • utf8mb4 — это расширенная версия UTF‑8, способная хранить любой Unicode‑символ, включая эмодзи, старые иероглифы и специальные знаки.
  • Если в базе используется обычный utf8, MySQL отрежет 4‑байтовые символы, и вы увидите «вопросительные знаки», «�» или даже потерю данных при импорте/экспорте.

Аналогия: представьте, что ваш магазин — это библиотека, а кодировка — это полки. utf8 — это полки высотой в 3 фута, а utf8mb4 — полки высотой в 4 фута. Эмодзи — это огромные книги, которые не помещаются на короткие полки и «уплывают» в неизвестность.


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

  1. Через phpMyAdmin

    • Откройте базу, нажмите «Operations» → «Collation».
    • Если рядом написано utf8_general_ci — это utf8, а не utf8mb4.
  2. Через консоль MySQL

SELECT @@character_set_database, @@collation_database;

Вывод будет выглядеть так: utf8 | utf8_general_ci — нужно менять.

  1. Через Bitrix‑консоль (если у вас есть доступ к bitrix/modules/main/tools/charset.php):
echo \Bitrix\Main\Application::getConnection()->getCharset();

Если строка не содержит utf8mb4, переходите к следующему пункту.


Пошаговый план миграции к utf8mb4

1. Сделайте резервную копию

mysqldump -u root -p --single-transaction --routines --triggers \
    --default-character-set=utf8 my_database > backup_utf8.sql

Важно: сохраняйте дамп в utf8, иначе при восстановлении уже потеряете символы.

2. Переименуйте текущую базу (по желанию)

CREATE DATABASE my_database_utf8mb4
    CHARACTER SET utf8mb4
    COLLATE utf8mb4_unicode_ci;

3. Пересоздайте таблицы

Самый надёжный способ — использовать mysqldump с параметром --default-character-set=utf8mb4, а затем импортировать:

mysqldump -u root -p --default-character-set=utf8 \
    my_database > dump_utf8.sql

# Переименовываем дамп, заменяя charset
sed -i 's/utf8/utf8mb4/g' dump_utf8.sql
sed -i 's/utf8_general_ci/utf8mb4_unicode_ci/g' dump_utf8.sql

mysql -u root -p my_database_utf8mb4 < dump_utf8.sql

4. Обновите конфигурацию Bitrix

В файле dbconn.php (или .settings.php) укажите:

'connection' => [
    'charset' => 'utf8mb4',
],

5. Проверьте соединение

$connection = \Bitrix\Main\Application::getConnection();
echo $connection->getCharset(); // должно вывести utf8mb4

6. Тестовый ввод эмодзи

Создайте простой элемент (например, новость) и в заголовке напишите Тест 🚀. После сохранения откройте запись в базе:

SELECT name FROM b_iblock_element WHERE ID = 123;

Если в результате вы видите Тест 🚀 без «?», всё правильно.


Частые подводные камни

Проблема Причина Как исправить
Эмодзи превращаются в ? Таблица/столбец всё ещё utf8 Выполните ALTER TABLE … CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Символы «»» в админке Клиент‑соединение использует старый charset Добавьте SET NAMES utf8mb4; в начале каждого запроса (Bitrix делает это автоматически, если charset задан правильно).
Снижение производительности Индексы на VARCHAR(255) могут превысить 767 байт в InnoDB Сократите длину индекса (VARCHAR(191)) или используйте utf8mb4_0900_ai_ci (MySQL 8) с поддержкой более длинных индексов.
Ошибка Incorrect string value При импорте дампа без --default-character-set=utf8mb4 Перезапустите импорт с нужным параметром.

Как ускорить процесс на VDSina

Если вы уже выбрали VDSina для вашего проекта, убедитесь, что сервер поддерживает нужную версию MySQL/MariaDB (≥ 5.5.3 для utf8mb4). На странице продукта вы найдёте информацию о предустановленных версиях: VDSina.

  • CPU: для больших магазинов лучше Hi‑CPU — быстрее обработка запросов при большом объёме данных.
  • RAM: минимум 4 ГБ, иначе InnoDB будет часто «выбрасывать» кеш и замедлять запись эмодзи.

Краткий чек‑лист

  • [ ] SELECT @@character_set_database, @@collation_database;utf8mb4 / utf8mb4_unicode_ci.
  • [ ] SHOW VARIABLES LIKE 'character_set%'; → все utf8mb4.
  • [ ] SET NAMES utf8mb4; в начале соединения.
  • [ ] Тестовый ввод эмодзи — проверка в phpMyAdmin и в UI Bitrix.

Если любой пункт не выполнен, повторите соответствующий шаг миграции.


Практика для закрепления

  1. Проверка текущей кодировки
    Выполните в консоли MySQL запрос SELECT @@character_set_database, @@collation_database;. Запишите полученные значения и объясните, что они означают для вашего сайта.

  2. Миграция одной таблицы
    Выберите любую таблицу (например, b_user) и выполните команду ALTER TABLE b_user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;. После этого проверьте, что в колонке NAME можно сохранить строку с эмодзи (Иван 🚀).

  3. Тестовый импорт
    Сохраните в файл emoji.sql запрос:

    INSERT INTO b_iblock_element (NAME) VALUES ('Тестовый пост 🎉');

    Импортируйте файл в базу, используя mysql --default-character-set=utf8mb4. Убедитесь, что запись отображается корректно в админке.

  4. Оптимизация индексов
    Если после миграции вы получаете ошибку Specified key was too long; max key length is 767 bytes, измените длину индекса на 191 символов:

    ALTER TABLE b_iblock_element DROP INDEX IX_NAME;
    ALTER TABLE b_iblock_element ADD INDEX IX_NAME (NAME(191));

    Объясните, почему именно 191 символа, а не 255.

  5. Проверка соединения из PHP
    В скрипте test_charset.php выведите результат $connection->getCharset();. Запустите скрипт через браузер и убедитесь, что вывод — utf8mb4. Если нет, найдите, где в коде переопределяется charset, и исправьте.

Выполните все задания, а затем проверьте, что ваш сайт без ошибок отображает любые эмодзи и специальные символы. Если возникнут вопросы, обратитесь к документации MySQL или к поддержке вашего хостинга.


Поздравляем! Вы теперь полностью уверены, что база данных вашего Битрикс‑магазина работает в кодировке utf8mb4, а значит, ваши пользователи смогут вводить любые символы без потери данных. 🚀


CamZamZam - онлайн фото с вебкамеры с эффектами
Cartoon Network: игры с персонажами
Чат рулетка в 2026: будущие функции
Эксперт по доменным стратегическим решениям
Хостинг для e-commerce проектов
Как играть в слоты
Как настроить CDN для сайта на хостинге Host.bg
Как настроить SSL-сертификат для сайта на Host.bg
Как оптимизировать производительность сайта с хостингом Host.bg
Как выбрать правильный хостинг для вашего сайта
Какие бывают ЛОР болезни у детей
Кассовые терминалы с оплатой картами
LOL куклы витрина детская
Лучшие видеорегистраторы для водителей
Онлайн QR-код сканер
Онлайн-связь
Оптимизация производительности баз данных на хостинге Host.bg
Основы настройки веб-хостинга: что вам нужно знать
Партнёрская программа без блога: как получать трафик из Telegram
Профессиональные хитрости для пользователей хостинга Host.bg
Регистрация ИП в Москве для иностранных граждан
Сравнение хостинга Host.bg с другими провайдерами
Субтитры — нет, уши — включены: погружение в английский за 5 минут
Сумки с бусинами
Техника для строительства загородных трасс
ТОП-10 VPS для разработчика: рейтинг серверов под рабочие задачи
WordPress блог для бизнеса
рейтинг хостингов 2026 Быстрые VDS серверы