Проблемы с кодировкой на сайте

Проблемы с кодировкой, когда на сайте отображаются нечитаемые символы вместо корректного содержимого, возникают из-за несовпадения кодировки файлов сайта с кодировкой, которая устанавливается настройками сервера или базы данных.

Ниже рассмотрим возможные способы устранения этих проблем.

Кодировка в запросе к базе

Часто проблема связана с тем, что для файлов сайта используется кодировка 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, выполните следующее:

  1. Перейдите в phpMyAdmin.
  2. Выберите нужную базу в списке баз слева.
  3. Перейдите в раздел Операции / Operations.

Db1

  1. В блоке Сравнение / Collation выберите utf8_general_ci.
  2. Отметьте галочками оба пункта.
  3. Нажмите кнопку Вперед / Go.

Db2