Иероглифы вместо русского текста на сайте. Проблемы с кодировкой текста на сайте
- Подробности
- Категория: PHP, MySQL, Java
- Опубликовано 26.12.2012 20:51
У некоторых людей случаются проблемы с кодировкой на сайте/сервере из-за чего вместо русского текста появляются иероглифы вида:
Почему это происходит?
Одной из причин происхождения является тот факт, что у вас установлены разные кодировки вывода данных (текста) в PHP / MySQL / Html / Файлах. По правде... Это единственная причина по которой у вас иероглифы.. Осталось разобраться только откуда именно поступает неправильная кодировка. Например, может быть что в PHP, Html, Файлах кодировка UTF-8, а в MySQL win-1251 и из-за этого у вас проблемы.
Как решить проблему с иероглифами возникающими вместо русского текста?
Что ж для того что бы решить проблему не мороча себе голову выставьте везде кодировку UTF-8.
1. Файл сайта должен быть сохранён в UTF-8.
2. В HTML между тэгами <head> и </head> добавьте строку:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
3. В PHP файле перед вывод каких-либо HTML частей, вставьте строку:
header("Content-Type: text/html; charset=utf-8");
Можно сию строку поставить и в начале файла.
4. И конечно MySQL... Тут дело затяжней.
Нередко бывают случаи когда все данные отображаются правильно, по русски короме тех которые хранятся и выводятся на страницу из базы данных MySQL, в этом случае это естественно проблемы только БД и предыдущие 3 шага выполнять необязательно.
Т.к я не знаю вашей ситуации то предположу:
4.1. У вас в MySQL все данные записываются в неверной кодировке.
Для того что бы убедиться в этом или обратном воспользуйтесь PhpMyAdmin и собственноручно проверьте базу. Если в ней записи в отличном "русском" состоянии, значит с кодировкой данных в базе всё нормально и остаётся только неправильная кодировка вывода данных из MySQL. Если же действительно в базе билиберда и полно иероглифов, то сделайте следующее:
В PhpMyAdmin выберите используемую БД, затем справа выберите вкладку "Операции", и в самом низу "Сравнение" Поставьте utf8_general_ci.
4.2. У вас неправильная кодировка вывода данных из MySQL.
В том случае если у вас в базе всё по русски а вот выводит данные она иероглифани, значит проблемы именно с выводом. Для решения этой проблемы, убедитесь что перед выводом чего-либо из базы в PHP файле присутствуют такие строки:
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER SET utf8' );
mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"' );