Решение проблем с кодировками сайтов
Таже можете ознакомится с обновленной версией здесь.
Здравствуйте. Пользователи часто сталкиваются с проблемами неверной кодировки после закачки сайтов к нам на сервер.
Сперва необходимо удостоверится, в кодировке чего именно проблема, в кодировке файлов или в кодировке базы. В принципе определить это не сложно. Весь сайт в непонятных кракозябрах, абсолютно весь, то скорее всего проблема в кодировке файлов. Это проблему решить наиболее легко. По умолчания на сервере установлена кодировка utf-8, а в Вашем случае кодировка страниц - windows-1251. В папке с сайтом создаем файл .htaccess ( или дописываем в существующий) с текстом:
AddDefaultCharset windows-1251
Сохраняете, и все начинает работать верно.
Это было просто, более сложная проблема, когда с кодировкой файлов все нормально, а проблема в кодировке базы. Если вы видите, что частично текст остается читабельным, но вся динамическая информация типа новостей, различных данных и т.д. отображается в виде знаков вопроса, то проблема в базе. Как же решить данную проблему?
Сперва необходимо удостоверится, что в самой базе данные находятся в нормальном виде. Для этого заходим в cpanel и запускаем PHPMYADMIN. Заходим в необходимую базу, выбираем какую-нибудь таблицу, где есть русские буквы, жмем просмотр. Если мы видим, что текст отображается нормально, значит проблема в кодировке соединения БД с PHP скриптами, если же мы и здесь видим вопросы, тогда возможны варианты.
1. Дамп базы изначально был в вопросах.
2. База была залита неверно.
Первый пункт проверить довольно легко. Открываем дамп в любом текстовом редакторе и смотрим русский текст в нем. Если он отображается вопросами, значит дамп сделан плохо, и нужно его сделать заново, так как те данные уже не восстановить. Если же в дампе нормальные данные - то скорее всего произошла ошибка при самой заливке. Чтобы избежать таких проблем, рекомендуем залить дамп при помощи программы от supex.net DUMPER Lite. Удобная программа, которая сама подбирает кодировки. Инстуркции по работе с ней Вы найдете на их сайте.
Итак, будем считать, что в PHPMYADMIN база отбражается корректно, а на сайте вопросами (так чаще всего и бывает). Для решения данной проблемы требуется сделать следующее.
Для самописного скрипта - наиболее легко, так как вы его хозяин, но и для любых других скриптов и движков правило не меняется. Просто там тяжелее найти нужные строки. Итак, в скрипте нужно найти следующие строки:
mysql_connect(что-то);
mysql_select_db(что-то);
После данных строк сразу пишите.
mysql_query("SET NAMES cp1251");
Сохраняете, и все начинает работать. В течение некоторого времени мы выолжим рекомендации для различных движков, какие именно файлы и где править. Можете писать запросы в ТП для того или иного движка.
С любовью, Ваши Shneider-host.ru.