О создании сайтов
15.12.2008Решение проблем с кодировкой сайта при отображении в разных браузерах
Ключевые слова: кодировка, charset, браузер
Полезная статья? — можете поделиться ссылкой или оставить комментарий |
Выделите текст и нажмите на Ctrl+C, чтобы скопировать выделенный текст
Выделите текст и нажмите на Ctrl+C, чтобы скопировать выделенный текст
Попробуем вместе c вами разобраться в причинах, по которым может "слетать" кодировка страниц при просмотре сайта в тех или иных браузерах. И даже в результатах поиска по вашему сайту в поисковых системах
Начальные данные
- Возьмём в качестве примера наш сайт: www.vashmaster.ru
- Все тексты сайта написаны и размещены на сайте в кодировке "windows-1251" и об этом браузеру не сообщается
- Сервер хостинга автоматически по умолчанию отправляет следующий заголовок:
Content-Type: text/html; charset=utf-8
При подобном несовпадении в реальной кодировке сайта и информации о кодировке в заголовке, отправляемом сервером, возникнут проблемы отображения страниц сайта в браузере посетителей.
Правильная кодировка - это очень важно!
Попробуем объяснить почему.
При описанных выше настройках, браузер пользователя не сможет автоматически определить в какой же кодировке написаны тексты на просматриваемом сайте. И скорее всего будет отображать страницы в нечитаемых "кракозябрах". Если вы столкнулись с подобным "недопониманием" между браузером и вашим сайтом, то в срочном порядке необходимо принять соответствующие меры. Иначе, это с большой вероятностью приведёт к череде серьёзных проблем.
Во-первых, в подобных условиях и настройках сайта, посетителям придётся постоянно в ручную (методом подбора) указывать браузеру кодировку для отображения сайта. Для этого потребуется сделать несколько лишних кликов мышкой. Но согласитесь, не каждому понравится делать лишних 2-3 клика мышкой, чтобы просто увидеть информацию на странице в читабельном виде. Тем более, что очень многие даже и не знают не только как сменить кодировку отображения в настройках браузера, но и что такое кодировка вообще! Большинство посетителей могут решить что сайт заброшен владельцем или кем-нибудь взломан, и постараются на него больше не возвращаться.
Во-вторых, при неоднозначном определении кодировки страниц сайта, поисковые системы могут не правильно индексировать текстовое содержимое сайта. Что в свою очередь несёт серьёзные проблемы с трафиком пользователей с поисковых систем. Конечно, некоторые поисковые системы могут пытаться по содержимому страниц как-то определить их правильную кодировку, но намного легче от этого не становится. Как правило, проблема всё равно остаётся.
Надеюсь, вы осознали, что проблемы с кодировкой могут стать очень серьёзной преградой в функционировании сайта, в его развитии и привлечении на него постоянных посетителей.
Для того, чтобы подобных проблем с кодировкой не возникало, нужно сделать соответствующие настройка как на сервере хостинга, так и на страницах сайта.
Настройки сайта должны быть такими, чтобы любой браузер или любой робот поисковой системы могли ОДНОЗНАЧНО определить в какой кодировке передаётся информация с сайта!
Решение проблемы с кодировкой сайта
Мы уже заметили, что все тексты на нашем сайте написаны и передаются в браузер посетителю сайта в кодировке "windows-1251". Что же сделать, дабы сервер, на котором размещён наш сайт, передавал браузеру в заголовке правильную информацию о кодировке? Давайте действовать по порядку...
1. Чтобы не зависеть от настроек сервера, на всех страницах сайта прямо в коде HTML нужно, используя мета-тег, явно прописать следующую директиву:
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
Разместить её необходимо на всех страницах, желательно, сразу же после открывающегося тега <head>. Это позволит браузеру автоматически в момент загрузки и интерпретации страницы выбрать правильную кодировку отображения в соответствии с полученной директивой! Одной этой директивы должно быть достаточно для решения нашей проблемы. Но так задумывалось в теории. А на практике, этой директивы не всегда достаточно. В редких случаях, но бывает так, что браузер в качестве кодировки для отображения страницы выбирает не ту, что указана в директиве на самой странице, а ту, что была передана в заголовке от сервера! И если указанная в двух местах информация о кодировке не совпадает, то проблема может остаться.
2. Чтобы сервер отдавал в своём ответе правильную информацию о кодировке, необходимо в корне своего сайта создать файл .htaccess и прописать в нём директиву:
AddDefaultCharset windows-1251
Тогда сервер продолжит по умолчанию отсылать заголовок о кодировке, но название кодировки будет совпадать с действующей на самом сайте. Ни каких несовпадений в названиях уже не будет.
Если файл .htaccess уже существует на вашем сервере, то просто добавьте указанную директиву, например, в самом начале. И ни в коем случае не удаляйте без надобности уже существующую в нём информацию!
Вот и всё решение проблемы. Согласитесь, всё это не так сложно?! Зато очень полезно для профилактики всевозможных проблем с пресловутой кодировкой.
Выполнив последовательно две перечисленные выше рекомендации, браузеры уже точно не смогут ошибиться в автоматическом выборе правильной кодировки отображения информации на вашем сайте. Всё-таки мы указали однозначно, правильно и даже в двух разных директивах информацию о кодировке!
Особые ситуации
Ситуация первая
Создатели сайтов, а чаще даже сами заказчики начинают самовольно и необдуманно вносить определённые доработки на сайт, размещать тексты так как им вздумается ну и т. д. Вплоть до того, что в результате на сайте могут оказаться разделы с информацией в разных кодировках. Не можем сказать, что это правильный подход, но будем отталкивать оттого, что так бывает и всё тут. В таком случае, даже если мы выполним выше перечисленные две рекомендации, всё равно может возникнуть ситуация, когда сервером будет выдаваться информация об одной кодировке, а в коде HTML страницы будет явно прописана уже другая кодировка. В подобном случае, пожалуй, наиболее простым решением будет следующее.
Пропишите в файл .htaccess директиву:
AddDefaultCharset Off
При использовании данной директивы, сервер просто совсем не будет отсылать заголовок с информацией о кодировке передаваемой страницы. Тогда браузеры будут отталкиваться от данных по кодировке, которые указаны явно в коде HTML на самих страницах сайта. При этом на одной странице данные могут быть в кодировке windows-1251, а на другой странице, например в utf-8. Главное, не забыть указать на этих страницах соответствующие мета-теги с информацией о правильной кодировке для распознавания и отображения текста браузером.
Подобное решение хоть и самое простое, но, пожалуй, не самое оптимальное и правильное. По-хорошему, нужно всю информацию на сайте и во всех разделах сайта размещать в одной и той же кодировке! И если есть несколько страниц в другой кодировке, то лучше обновить в них информацию переконвертировав все тексты в требуемую кодировку.
Ситуация вторая
Как известно, большинство сайтов при генерации страниц часть данных выбирают из базы данных, например, MySQL (если сайт написан на языке PHP). Часто, при переносе сайта с одного хостинга на другой, могут возникнуть проблемы из-за несовпадения кодировок между данными, хранящимися в базе данных MySQL, и данными, хранящимися, например, непосредственно в шаблонах сайта. Таким образом, может возникнуть такая ситуация, что при формировании одной страницы на ней могут оказаться данные в разных кодировках. Пожалуй, это одна из самых грубых возможных ошибок с кодировкой на сайте и её нужно решать сразу же. Иначе, потом могут возникнуть дополнительные сложности при наполнении и редактировании сайта.
Решение подобных разногласий с данными, хранящимися в базе данных, достигается правильной явной установкой настроек кодировки при подключении к базе данных и до выполнения выборок данных из неё. Например, если данные на сайте у нас хранятся в кодировке windows-1251, то и читать данные из базы мы должны в этой же кодировке. Для этого, после выполнения подключения к базе с помощью функции PHP mysql_connect() (или mysql_pconnect()) выполните следующий запрос SQL:
mysql_query("SET NAMES cp1251");
Данный запрос, сообщает серверу базы данных MySQL, что все данные хранятся и должны передаваться в кодировке cp1251 (именно такое название кодировки используется в MySQL вместо упоминаемого ранее названия windows-1251, которое используется при передачи данных HTML).
Но лучше всего изменить кодировку данных в базе MySql на ту, которая используется и на самом сайте. Тогда серверу базы данных не придётся выполнять лишнюю операцию по перекодировки данных из одного формата в другой.
На заметку
Если вы посетили сайт, у которого по каким-либо причинам сбилась кодировка, но вам очень нужно получить на нём полезную информацию (не дожидаясь, когда разработчики сайта выполнят вышеперечисленные нами рекомендации), то следует в ручную в настройках браузера указать правильную кодировку страницы. Сделать это можно обычно через основное меню браузера: Вид -> Кодировка -> Далее выберите из списка название предполагаемой кодировки страницы. Возможно, чтобы угадать, вам придётся проделать данную процедуру не один раз, выбирая то одно, то другое название из списка кодировок. Чтобы ускорить процесс подбора, рекомендуем перебирать их в следующем порядке: Кириллица (Windows-1251), Кириллица (UTF-8), Кириллица (KOI8-R). Это наиболее часто используемые кодировки на сайтах в Рунете.
Вот, пожалуй, и всё, что нам хотелось поведать вам о проблемах с кодировками и возможных способах их устранения.
Удачи!
Автор: «Ваш МАСТЕР»Ещё по теме
- Правила размещения фотографий на сайте
- Проверка email на валидность
- Поиск и замена текста. Методы решения
- Сайт не открывается при наборе домена с www
- Кодировка. Изменение кодировки текста
Читайте в этом же разделе:
- Размер страницы имеет значение. Следующая страница будет подана через 10 секунд
- Сайт-визитка по цене автомобиля
- Оценка стоимости создания сайта на примере разработки сайта-визитки
- Бесплатное создание функциональных сайтов на платном хостинге
Комментарии
Если Вы можете качественно дополнить нашу статью, задать интересный вопрос или готовы исправить ошибку, то мы будем только рады. Заранее Вам благодарны!
Оставить свой комментарий к статье
| 22.04.2009 16:33 | tfox Великолепная статья :) Нужно всего лишь следить httpaccess и мета-тегом в шаблоне :) Все просто :) |
| 22.05.2009 11:47 | Вячеслав Помогите пожалуйста! |
| 22.05.2009 20:03 | Вячеслав Вячеслав, могу предложить несколько вариантов: |
| 31.05.2009 16:18 | web_profi Спасибо за решения. |
| 14.10.2010 00:23 | Cools А как быть если на сайте несколько языков, в том числе русский, и русский язык выводиться знаками вопроса? Причем такая проблема только с данными, которые извлекаются из базы данных? (всё что в шаблоне например отлично по русски выводится) пример можно смотреть на onspot.ru. В БД все таблицы в кодировке windows-1251 |
| 14.10.2010 00:53 | Ваш МАСТЕР Cools, 99%, что для решения проблемы с русской кодировкой, вам нужно выполнить вот этот запрос SQL: mysql_query("SET NAMES cp1251"); |
| 14.10.2010 21:04 | Сools Спасибо за ответ, но я реально не знаю где конкретно и как определить место установления соединения с БД в скрипте. Как мне определить где имено выпольнить этот запрос? (я не силен в коде ) ((((( |
| 14.10.2010 21:08 | Ваш МАСТЕР Сools, это зависит от того, какой у вас используется движок на сайте. Если вы не сильны в программировании и настройке сайтов, тогда лучше обратиться к специалистам. Например, к нам. Думаю, подобная настройка кодировки будет стоить всего-то рублей 100. |
| 14.10.2010 21:37 | Сools Вот и давайте позмотрите тогда вы. Я с этим уже замучился. Готов заплатить. |
| 14.10.2010 23:53 | Ваш МАСТЕР Обращайтесь, укротим ваш сайт. Наши контакты на сайте есть. Ждём вашего выхода на связь. |
| 15.10.2010 14:19 | Ваш МАСТЕР Сools, проверили ваш сайт. К сожалению, кодировка в базе уже битая. Восстановлению не подлежит. Такое иногда случается, если делать не правильный бекап базы данных при переносе сайта с одного хостинга на другой. Поэтому, данную работу, лучше всё-таки сразу давать профессионалам, а не экспериментировать самому. |
| 15.01.2011 02:48 | Владимир Спасибо! Полезная статья. |
| 15.01.2011 19:26 | Ваш МАСТЕР Владимир, не совсем так. Под сервером имеется в виду настройки хостинга. Для каждого сайта на хостинге можно прописать свою кодировку "по умолчанию". Вот она и должна совпадать с реальной кодировкой сайта. |
| 18.07.2011 07:27 | Greta Shoot, who would have tohguht that it was that easy? |
| 18.07.2011 14:16 | irrcvzqxj 7Hy5Z4 qngqpbqvycxr |
| 19.07.2011 21:10 | xqizkhbk dQwBMs , [url=http://xofydnjelhgf.com/]xofydnjelhgf[/url], [link=http://fxuexdlmoyod.com/]fxuexdlmoyod[/link], http://iwygcfebcmvt.com/ |
| 20.07.2011 14:07 | kayffj Xcp87S tyuumyfseoav |
| 22.07.2011 16:32 | qrsbornnyw SfSU5o , [url=http://xymwlrocqkmx.com/]xymwlrocqkmx[/url], [link=http://dprxofbbcjyk.com/]dprxofbbcjyk[/link], http://sdupsslscziu.com/ |
| 26.10.2011 22:48 | Sergey универсальный код для отправки и приема данных mysql |
| 08.11.2011 03:39 | Елена Спасибо, так вроде все понятно и все что касается meta тегов соблюдено. Сайт в win-1251 (прописано на всех страницах) и при проверке в большинстве браузерах выдает нормально. Но вот есть сомнения, так как ответ сервера Content-Type: text/html и больше ничего и при анализе на cy-pr.com выдает: Кодировка сервера / страницы: Неверная кодировка / windows-1251 (Cyrillic)(это если проверять с www), а без все соответствует. Что бы это значило. Может здесь и есть дело в настройках хостинка? Плиз на e-mail.(www.stroi-montag-plus.ru) |
| 12.12.2011 15:22 | T&K Сталкнулся с такой проблемой, часть текста отображается не правильно но только в IE в других браузерах все нормально, как решить всю голову сломал не пойму. |
| 26.12.2011 21:35 | Светлана Ковалева Спасибо, помогло! Метатег прописала и всё случилось! |
| 17.01.2012 10:10 | Нина Огромное спасибо за статью! Была в шоке когда открыла созданный сайт в другом браузере. Теперь все норм!!! |
| 19.01.2012 22:08 | Анастасия Шикарно написано. Огромное спасибо "нашему МАСТЕРУ". Не в каждом руководстве так подробно опишут. |
| 09.02.2012 16:24 | Константин народ помогите! Наш сайт http://vip-treker.ru штото глюканул, посоветуйте што можно сделать, а то я весь на измене не пойму што и случилось |
| 09.02.2012 16:29 | Константин народ помогите! Наш сайт http://vip-treker.ru/ что-то тупонул, посоветуйте что можно сделать, а то я весь на измене, не пойму что и случилось... |
| 25.03.2012 18:24 | Alex Очень полезная статья, благодарю автора. Мне она пришла на помощь как раз вовремя!!! |
При любом использовании информации веб-сайта
гиперссылка на «Ваш МАСТЕР» обязательна!

