У меня на сайте иероглифы или неверная кодировка?

22.09.2014
Сложность
3 мин.
3805

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

charset-1

Основной причиной этой проблемы является установка неверной кодировки в (тексте) PHP, MySQL, HTML или в файлах. Например у вас в тексте HTML или PHP кодировка UTF-8, а в MysQL используется cp1251_general_ci или наоборот в MySQL используется utf8_general_ci, а в PHP windows-1251, да еще и сервер по умолчанию использует кодировку UTF-8.

Для того чтобы все у вас заработало правильно, нужно привести все к единой кодировке.

Итак, чтобы решить проблему с неверной кодировкой на сайте нужно сделать следующее:

1. Если вы уверены что у вас используется кодировка windows-1251, то для начала укажите эту кодировку в панели управления вашим сайтом в разделе WWW домен, для нужного вам адреса.

charset-2

Либо приведите все к универсальной кодировке UTF-8

В HTML между тэгами <head> и </head> добавьте строку:

<meta charset="utf-8">

2. В PHP в начале файла вставить строку:

header("Content-Type: text/html; charset=utf-8");

3. Бывают случаи, когда все данные, кроме русских символов отображаются правильно. Это однозначно связано с MySQL:

- данные в базу записываются в неверной кодировке (это можно проверить в phpMyAdmin, во первых открыть любую таблицу где хранятся данные с русскими символами, если они в неверной кодировке, попробуйте вставить новую строку в phpMyAdmin, чтобы убедиться в том, что либо данные поступают в базу в неверной кодировке, либо сама база имеет неверную кодировку).

- если при добавлении тестовой строки в таблице все отображается правильно, то проблема в неверной кодировке вывода данных из MySQL. В том случае если у вас в базе всё по русски, а вот выводит данные она иероглифами, значит проблемы именно с выводом, для решения этой проблемы можно принудительно указать нужную нам кодировку вывода.

mysql_query('SET NAMES utf8');  
mysql_query('SET CHARACTER SET utf8');
mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"');

- если при добавлении в таблицу в итоге вы увидите иероглифы, значит в настройках базы стоит неверная кодировка (В PhpMyAdmin выберите используемую БД, затем справа выберите вкладку "Операции", и в самом низу "Сравнение" поставьте utf8_general_ci или любую другую нужную вам кодировку)

P.S. Будьте внимательны и все у вас получиться.

Были ли сведения полезными?
16 
Продолжая использовать этот сайт и пользуясь нашими услугами, Вы соглашаетесь с Правилами и условиями веб-сайта и использованием файлов cookie на нашем веб-сайте. Также ознакомьтесь с нашей Политикой конфиденциальности, согласно которой, в заявленной степени, Вы соглашаетесь на обработку Ваших персональных данных.