Проблемы с кодировкой на сайте
Проблемы с кодировкой, когда на сайте отображаются нечитаемые символы вместо корректного содержимого, возникают из-за несовпадения кодировки файлов сайта с кодировкой, которая устанавливается настройками сервера или базы данных.
Ниже рассмотрим возможные способы устранения этих проблем.
Кодировка в запросе к базе
Часто проблема связана с тем, что для файлов сайта используется кодировка cp1251, а для содержимого базы данных — UTF-8. В этом случае на сайте часть текста отображается корректно, а часть — в виде вопросительных знаков.
Чтобы ее устранить, необходимо добавить в файл скрипта, который содержит данные для подключения к базе данных, следующие строки:
mysql_query("SET NAMES 'cp1251' COLLATE 'cp1251_general_ci'");
mysql_query("SET CHARACTER SET 'cp1251'");
Если используется mysqli
:
mysqli_query($link, "SET NAMES 'cp1251' COLLATE 'cp1251_general_ci'");
mysqli_query($link, "SET CHARACTER SET 'cp1251'");
Кодировка в .htaccess
Еще один распространенный случай — когда соединение с базой использует по умолчанию кодировку UTF-8, а файлы сайта открываются в браузере в другой кодировке. (Могут выводиться символы раняРвместо кириллицы.)
Для устранения проблемы рекомендуем указать кодировку по умолчанию в файле .htaccess. Он располагается в папке public_html
в директории вашего сайта.
Добавьте в файл строку:
AddDefaultCharset UTF-8
При такой настройке сервер будет использовать для отображения сайта именно указанную кодировку.
Кодировка базы данных
В отдельных случаях может потребоваться изменить кодировку в базе данных MySQL.
Например, чтобы установить по умолчанию кодировку UTF-8, выполните следующее:
- Перейдите в phpMyAdmin.
- Выберите нужную базу в списке баз слева.
- Перейдите в раздел Операции / Operations.
- В блоке Сравнение / Collation выберите
utf8_general_ci
. - Отметьте галочками оба пункта.
- Нажмите кнопку Вперед / Go.