
🛠 Меняем кодировку MySQL в Laragon: с latin1_swedish_ci на utf8mb4_unicode_ci
Создали базу в phpMyAdmin, развернули WordPress, а через неделю заметили: в таблицах кракозябры вместо текста. Открываете настройки, latin1_swedish_ci. Каждый, кто работает с Laragon на Windows, рано или поздно натыкается на этот сюрприз.
Проблема в том, что сборка MySQL, которую Laragon ставит из коробки, наследует древний дефолт: latin1 как набор символов и latin1_swedish_ci как сравнение. Для русского языка это катастрофа: кириллица пишется знаками вопроса или абракадаброй, сортировка строк ломается, плагины падают с ошибками.
Ниже, два изменения в одном файле, которые навсегда закрывают этот вопрос. Займет три минуты. Работает на Laragon 6, 5 и даже на древней четвёрке.
💡 Быстрый обзор:
- Открываем
my.iniчерез меню Laragon и добавляем две строки в секцию[mysqld] - Выбираем
utf8mb4_unicode_ciкак оптимальный вариант для WordPress в 2026 году (и разбираем почему именно он) - Сохраняем файл, перезапускаем MySQL и проверяем результат в phpMyAdmin
- Бонус: как сменить кодировку уже созданной базы без потери данных
Почему кодировка по умолчанию вообще важна
MySQL работает с многоуровневой системой наследования: сервер → база данных → таблица → столбец. Если на уровне сервера задан latin1_swedish_ci, каждая новая база, если не указано иное при создании, унаследует именно его.
Для WordPress это критично, потому что:
- Ядро, темы и большинство плагинов хранят контент в
utf8mb4 - При автоматическом создании базы через
wp-config.phpWordPress НЕ переопределяет серверный дефолт - Несовпадение кодировок сервера и таблиц даёт «невнятные» ошибки:
???в админке, битые символы в JSON REST API, падения при экспорте
По данным W3Techs, WordPress используют 43,5% всех сайтов интернета, а сам движок с версии 4.2 требует utf8mb4 для полной поддержки эмодзи. Laragon, один из самых популярных локальных серверов под Windows, но его MySQL-сборка поставляется с консервативным дефолтом ради обратной совместимости. Отсюда и конфликт.
Шаг 1: Открываем my.ini через меню Laragon
Самый простой способ добраться до конфигурационного файла MySQL, встроенное меню Laragon:
- Нажмите правой кнопкой мыши на иконку Laragon в трее
- Выберите Menu → MySQL → my.ini

Откроется Блокнот (или ваш редактор по умолчанию) с полным конфигом MySQL. Файл разбит на секции в квадратных скобках: [client], [mysqld] и [mysqldump]. Нас интересует [mysqld] (секция настроек демона MySQL).
Если по какой-то причине меню не открывает файл, найдите его вручную: C:\laragon\bin\mysql\<версия>\my.ini. В сборках Laragon 6 путь может быть C:\laragon\bin\mysql\mysql-8.0.30-winx64\my.ini, зависит от установленной версии.
Шаг 2: Добавляем две строки в секцию [mysqld]
Прокрутите файл до секции [mysqld] и добавьте в конец (перед следующей секцией, если она есть) две строки:
1 character_set_server = utf8mb4 2 collation_server = utf8mb4_unicode_ci
Что здесь происходит:
character_set_server = utf8mb4, сервер по умолчанию использует кодировку UTF-8 Multilingual Version 4, которая поддерживает ВСЕ символы Unicode, включая эмодзи, кириллицу, иероглифыcollation_server = utf8mb4_unicode_ci, правило сравнения строк:_unicode_значит «по стандарту Unicode»,_ciзначит case-insensitive (регистронезависимое сравнение)
Добавлять нужно именно в [mysqld], не в [client] и не в [mysqldump]. Ошибка с секцией, самая частая причина «ничего не поменялось».
Полный фрагмент секции после правки выглядит примерно так:
1 [mysqld] 2 port=3306 3 socket=/tmp/mysql.sock 4 key_buffer_size=256M 5 max_allowed_packet=512M 6 character_set_server = utf8mb4 7 collation_server = utf8mb4_unicode_ci
Шаг 3: Сохраняем файл и перезапускаем MySQL
Сохраните my.ini (Ctrl+S) и перезапустите MySQL. В Laragon это делается через то же меню:
- Правый клик по иконке Laragon в трее
- Menu → MySQL → Stop
- Подождите 3-5 секунд
- Menu → MySQL → Start
Альтернативно нажмите Menu → Перезапустить, Laragon сам остановит и запустит все службы разом.
После перезапуска новые базы данных будут создаваться с utf8mb4_unicode_ci по умолчанию. Старые базы НЕ меняются автоматически, о том, как сконвертировать существующую, читайте в блоке «Частые вопросы» ниже.
Шаг 4: Проверяем результат в phpMyAdmin
Откройте phpMyAdmin через меню Laragon (Menu → MySQL → phpMyAdmin) и создайте тестовую базу:
- Нажмите «Создать БД»
- Введите любое имя
- Посмотрите на выпадающий список «Кодировка», теперь там по умолчанию стоит
utf8mb4_unicode_ci

Если выпадающий список всё ещё показывает latin1_swedish_ci, проверьте, что строки character_set_server и collation_server добавлены именно в секцию [mysqld], а не в [client], и что между названием параметра и знаком = нет лишних пробелов.
Быстрая проверка через SQL-запрос (выполните в phpMyAdmin на вкладке SQL):
1 SHOW VARIABLES LIKE 'character_set_server'; 2 SHOW VARIABLES LIKE 'collation_server';
Обе переменные должны вернуть utf8mb4 и utf8mb4_unicode_ci соответственно.
Какую кодировку выбрать: сравнение вариантов
Тема кодировок MySQL обросла мифами, поэтому разложим по полочкам три актуальных варианта и один устаревший:
Кодировка | Версия MySQL | Эмодзи | Сортировка | Совместимость | Вердикт |
|---|---|---|---|---|---|
| Любая | ❌ Нет | Упрощённая, быстрая | Максимальная | Устарела, не используйте |
| 5.5.3+ | ✅ Да | По стандарту Unicode (UCA 4.0) | Отличная | Рекомендуем для Laragon |
| 8.0+ | ✅ Да | По UCA 9.0, AI (accent-insensitive) | Только MySQL 8+ | Современный стандарт, но не везде |
| 5.5.3+ | ✅ Да | Упрощённая | Отличная | Компромисс скорости и точности |
Почему мы советуем utf8mb4_unicode_ci для локальной разработки в Laragon:
- Laragon поставляет разные версии MySQL (от 5.7 до 8.0+),
utf8mb4_0900_ai_ciпоявился только в MySQL 8.0 и отсутствует в MariaDB, которая часто идёт в альтернативных сборках utf8mb4_unicode_ciработает везде, начиная с MySQL 5.5.3 (2010 год)- Разница в качестве сортировки между
unicode_ciи0900_ai_ciдля типового WordPress-сайта незаметна - Хостинги на shared-тарифах часто используют MySQL 5.7, если локально разрабатывать на
0900_ai_ci, а на проде его нет, получите ошибку при переносе
Если вы точно знаете, что продакшен-сервер работает на MySQL 8.0+, а локальный Laragon использует MySQL 8.0, ставьте utf8mb4_0900_ai_ci. Это современный стандарт, рекомендованный Oracle, с лучшей поддержкой многоязычной сортировки.
Что насчёт utf8_general_ci? Он был актуален лет десять назад, когда utf8mb4 ещё не поддерживался массово. Сегодня у него два фатальных недостатка: не хранит эмодзи (WordPress в админке использует их активно) и упрощённо сортирует расширенные символы. Ставить его в 2026 году нет причин.
Видео: как сменить кодировку базы данных MySQL через phpMyAdmin
Текстовые инструкции, это хорошо, но иногда проще один раз увидеть. В этом 4-минутном видео показан полный процесс смены кодировки существующей базы данных через интерфейс phpMyAdmin, от выбора таблиц до финальной проверки:
⁉️🤔 Частые вопросы
У меня уже есть база данных с latin1_swedish_ci. Как сменить её кодировку?
Самый безопасный путь, через phpMyAdmin. Выберите базу слева, перейдите на вкладку «Операции», в блоке «Кодировки» выберите
utf8mb4_unicode_ciи нажмите «Вперёд». phpMyAdmin сгенерирует ALTER-запросы для каждой таблицы. Перед операцией обязательно сделайте бэкап: вкладка «Экспорт» → формат SQL → «Вперёд».
Поменял my.ini, перезапустил MySQL, а в phpMyAdmin всё равно latin1_swedish_ci. В чём дело?
Три самые частые причины: (1) строки добавлены в
[client]вместо[mysqld], проверьте, под какой квадратной скобкой они находятся; (2) MySQL не перезапустился, откройте диспетчер задач Windows и убедитесь, что процессmysqld.exeисчез и появился заново; (3) вmy.iniнесколько секций[mysqld], так бывает после нескольких обновлений Laragon, оставьте одну.
Что лучше для WordPress: utf8mb4_unicode_ci или utf8mb4_general_ci?
Для WordPress разница минимальна.
utf8mb4_unicode_ciточнее сортирует многоязычный контент (например, немецкое «ß» = «ss»),utf8mb4_general_ciчуть быстрее на больших объёмах, но разница в миллисекундах. Беритеunicode_ciи не думайте.
Можно ли просто прописать кодировку в wp-config.php?
define('DB_CHARSET', 'utf8mb4')иdefine('DB_COLLATE', 'utf8mb4_unicode_ci')вwp-config.phpвлияют ТОЛЬКО на таблицы, которые создаёт сам WordPress при установке. Серверный дефолт при этом не меняется, и любая база, созданная вручную через phpMyAdmin, получитlatin1_swedish_ci. Поэтому правитьmy.iniвсё равно нужно.
После смены кодировки часть текста на сайте превратилась в знаки вопроса. Это обратимо?
Да, но действовать нужно аккуратно. Знаки вопроса появляются, когда данные были записаны в
latin1, а читаются какutf8. Решение: экспортируйте базу с флагом--default-character-set=latin1, затем импортируйте с--default-character-set=utf8mb4. Точная команда зависит от версии MySQL, поэтому сверьтесь с официальной документацией.
Итоги: что прописать в my.ini прямо сейчас
Если вы используете Laragon для локальной разработки WordPress-сайтов, две строки ниже решат проблему с кодировкой раз и навсегда:
1 character_set_server = utf8mb4 2 collation_server = utf8mb4_unicode_ci
Этот вариант работает на любой версии MySQL от 5.5 до 8.4 и на всех актуальных сборках MariaDB. Он корректно хранит кириллицу, эмодзи и не создаёт сюрпризов при переносе базы с локалки на прод, независимо от того, на каком хостинге работает продакшен.
Остались вопросы по конкретной версии Laragon или нестандартной конфигурации? Загляните в тему на форуме Laragon, там разработчики обсуждают нюансы настройки кодировок, включая Docker-сборки и кастомные порты. А если статья сэкономила вам вечер, расскажите о ней коллегам, которые тоже мучаются с latin1_swedish_ci.



