Кракозябры на сайте появляются, когда текст сохранён в одной кодировке, а браузеру объявлена другая: русские буквы превращаются ⠫привет», вопросики или ромбики. В цепочке участвуют четыре звена - заголовок сервера, метатег страницы, кодировка файлов и кодировка базы данных с соединением, и ломается всегда какое-то одно. Лечение - не подбирать варианты наугад, а найти расхождение и привести все звенья к одной кодировке, для современных сайтов это UTF-8. Разбираем, как поставить диагноз за 15 минут.
Откуда берутся кракозябры на сайте: типовые сценарии
- Переезд на новый хостинг - у нового сервера другая кодировка по умолчанию в настройках PHP, MySQL или веб-сервера
- Правка файла не тем редактором - файл в UTF-8 пересохранили в windows-1251 или наоборот, и «поехал» конкретный блок сайта
- Обновление PHP или MySQL - сменились умолчания подключения к базе, и старый сайт начал читать её неправильно
- Импорт данных - каталог из Excel или выгрузка 1С пришли в 1251, а сайт живёт в UTF-8: кракозябры только у импортированных товаров
- Смешанное наследство Битрикс - старые сайты на Битрикс часто работают в windows-1251, и перенос кода или базы с UTF-8-проекта даёт кашу
Где проверять кодировку: четыре звена цепочки
| Звено | Как проверить | Типовая ошибка |
|---|---|---|
| Заголовок сервера | F12, вкладка Network, поле Content-Type у документа | Сервер объявляет charset, не совпадающий с реальной кодировкой страниц |
| Метатег страницы | Исходный код: meta charset в начале HTML | Метатег говорит одно, заголовок сервера - другое; побеждает заголовок |
| Файлы сайта | Открыть шаблон в редакторе с определением кодировки | Часть файлов в UTF-8, часть в 1251 после правок разными людьми |
| База и соединение | Кодировка таблиц в phpMyAdmin и параметры подключения | База в одной кодировке, соединение с ней - в другой |
Как исправить кодировку сайта: план действий
- Зафиксируйте масштабКракозябры везде - смотрите заголовок сервера и соединение с базой. В одном блоке или разделе - виноват конкретный файл или импорт. В админке нормально, на витрине нет - расхождение между базой и шаблоном.
- Сделайте бэкапСкопируйте файлы и базу до любых правок: неудачные эксперименты с перекодировкой должны быть обратимы.
- Определите фактические кодировкиПосмотрите Content-Type в сети, meta charset в коде, кодировку файлов в редакторе, кодировку таблиц и соединения в phpMyAdmin. Выпишите все значения - расхождение и есть причина.
- Приведите цепочку к одному стандартуМеняйте объявление, а не перекодируйте контент, если текст ещё цел: правильный charset в заголовке и метатеге чинит большинство случаев. Перекодировка файлов и базы - шаг для случаев, когда данные реально сохранены в разнобой.
- Проверьте всё, что генерирует текстФормы, письма с сайта, выгрузки, печатные версии: кодировка ломается и там. Кракозябры в письмах часто идут в комплекте с проблемами доставки - загляните в статью про письма в спаме.
Кракозябры не сдаются?
Найдём сломанное звено, приведём сервер, файлы и базу к единой кодировке и вернём текст из копий, если он повреждён. Аккуратно, с бэкапами, обычно за один день.
Почему стандарт - UTF-8 и что делать со старым сайтом на 1251
UTF-8 понимает все языки и символы, не конфликтует с внешними сервисами и API, и именно его ждут поисковики и браузеры по умолчанию. Сайты на windows-1251 работают, но регулярно спотыкаются: эмодзи в отзывах, обмен данными с сервисами доставки и оплат, интеграции с CRM. Перевод рабочего сайта на Битрикс с 1251 на UTF-8 - это полноценный проект с конвертацией базы, файлов и проверкой всех интеграций: делается на тестовой копии и переключается за одну ночь. Если сайт старше десяти лет и планирует жить дальше - это разумная инвестиция, оценим по запросу в рамках доработки сайта.
Частые вопросы про кодировку и кракозябры
Кракозябры появились только в письмах с сайта. Где искать?
После переноса сайта на новый хостинг весь текст стал вопросиками. Это конец?
Можно ли исправить кодировку без программиста?
Почему кракозябры видны только в одном браузере или у одного посетителя?
Итог: кракозябры - это всегда спор между звеньями цепочки «сервер - страница - файлы - база», и он решается диагностикой, а не перебором настроек. Сложный случай, старый сайт на 1251 или страх потерять тексты - передайте задачу нам: приведём кодировку в порядок с бэкапами на каждом шаге, а на поддержке проследим, чтобы история не повторилась. С 2013 года, 450+ проектов, смета в течение дня.












