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

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

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

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

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

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

Просмотр таблиц базы данных в интерфейсе phpMyAdmin

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

Db2

Раздел «Operations» в интерфейсе phpMyAdmin