Убеждаемся, что кодировка базы данных — 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, а значит, ваши пользователи смогут вводить любые символы без потери данных. 🚀


Английский видеочат для путешествий
Чат рулетка 2026: Интерактивные элементы
Чат-рулетка: случайный собеседник в одно нажатие
Чат с Аней: Моё общение
Этикетки для упаковки и доставки
Как настроить бэкапы для вашего сайта на хостинге Host.bg
Как обновить PHP на хостинге Host.bg
Как решить проблемы с загрузкой сайта на Host.bg
Калькулятор зарплаты SEO-оптимизатора
Курска: автошколы с бесплатной консультацией
Лайфхаки для управления хостингом на Host.bg
Монетизация через платные услуги
Мск: ИП или ООО — лучший старт для бизнеса?
Общение в интернете без риска
Ошибки при настройке хостинга и их решения
Проблемы с доменами и их решения на хостинге Host.bg
Продвижение сайтов: поисковое продвижение + ИИ
Ремонт квартир с использованием норм
Roblox: игровая культура
Сайтостроение: основы и секреты
Сколько стоит биткоин
Сравнение ценовых диапазонов хостинга Host.bg
Трубная продукция для трубопроводных конструкций
Утепление в Твери и Брянской области
Vdsina: Великая сила
Видео рулетка 18+
Видеочат с случайным собеседником онлайн
Видеообщения по всему миру
Выбор оптимального плана хостинга на Host.bg
рейтинг хостингов 2026 Быстрые VDS серверы