Некорректное отображение текста на сайте (так называемые «кракозябры») — одна из самых распространённых проблем. В большинстве случаев она связана с тем, что кодировка страницы, сервера и базы данных не совпадают. В этой статье разберём, как правильно изменить кодировку сайта и избежать типичных ошибок.
Что такое кодировка сайта
Кодировка — это способ представления символов в виде байтов. Браузер должен понимать, в какой кодировке сохранён текст, чтобы корректно его отобразить.
Если кодировка указана неверно или не совпадает с реальной, пользователь увидит набор нечитаемых символов.
Какая кодировка используется сегодня
На современных сайтах стандартом является UTF-8 — универсальная кодировка, поддерживающая все языки и символы.
Рекомендуется использовать именно её для всех компонентов сайта: HTML, PHP, базы данных и серверных настроек.
Где задаётся кодировка
Кодировка сайта может задаваться на нескольких уровнях:
- HTML (страница)
- Сервер (.htaccess или настройки хостинга)
- PHP (заголовки)
- База данных
- Файлы сайта
Важно, чтобы все уровни были согласованы между собой.
Способ 1. Указание кодировки в HTML
Самый простой способ — добавить мета-тег в <head>:
<meta charset="utf-8">
Этот тег сообщает браузеру, как интерпретировать содержимое страницы.
Способ 2. Настройка через .htaccess
Если сайт работает на Apache, можно задать кодировку на уровне сервера:
AddDefaultCharset UTF-8
Этот параметр устанавливает заголовок charset, который отправляется браузеру.
Способ 3. Установка кодировки в PHP
При генерации страниц через PHP важно явно указывать кодировку:
header('Content-Type: text/html; charset=utf-8');
Это гарантирует, что браузер получит правильный заголовок.
Способ 4. Настройка кодировки базы данных
Если данные берутся из базы, важно, чтобы она использовала ту же кодировку.
Пример для MySQL:
$mysqli->set_charset('utf8mb4');
Или через SQL-запрос:
SET NAMES utf8;
Несовпадение кодировок базы и сайта — частая причина проблем с текстом.
Способ 5. Перекодировка файлов сайта
Даже если всё настроено правильно, проблема может быть в самих файлах.
Что нужно сделать:
- открыть файлы в редакторе
- сохранить их в UTF-8
- желательно без BOM
Если файл изначально в другой кодировке, его нужно конвертировать.
Способ 6. Преобразование кодировки в PHP
Если данные приходят в неправильной кодировке, можно преобразовать их:
$text = mb_convert_encoding($text, 'UTF-8', 'Windows-1251');
Функция позволяет переводить строку из одной кодировки в другую.
Типичные ошибки
- Несовпадение кодировок — HTML в UTF-8, а база данных в другой кодировке. В результате текст отображается некорректно.
- Кодировка указана только в одном месте — если указать её только в HTML, а сервер отправляет другую, браузер может выбрать неправильную.
- Игнорирование заголовков сервера — приоритет часто имеет HTTP-заголовок, а не
<meta>. - Смешанные кодировки в файлах — если часть файлов в UTF-8, а часть — в другой кодировке, сайт будет работать нестабильно.
Как правильно изменить кодировку
Если вы переводите сайт в UTF-8, действуйте по шагам:
- Перекодируйте все файлы сайта
- Установите
<meta charset="utf-8"> - Добавьте
AddDefaultCharset UTF-8в.htaccess - Настройте PHP-заголовки
- Измените кодировку базы данных
- Проверьте подключение к БД (
set_charset)
Только комплексный подход даёт стабильный результат.
Проверка результата
После изменений:
- Очистите кэш браузера
- Откройте сайт в режиме инкогнито
- Проверьте исходный код страницы
- Убедитесь, что текст отображается корректно
Итог
Изменение кодировки сайта — это комплексная задача, затрагивающая сервер, файлы, HTML и базу данных.
Лучшей практикой является использование UTF-8 на всех уровнях. Это позволяет избежать большинства проблем и обеспечивает корректное отображение текста на всех устройствах и браузерах.