Генератор форм

Для веб-мастера

Реклама


Все что нужно знать про кодировку веб-страниц

Рейтинг:
Дата: 14 июля 2011 Просмотры 18708 Комментарии 1

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

Думаю каждый из нас сталкивался с проблемой, когда при разработке сайта на локальном компьютере все выглядело чудесно, но стоило только перенести сайт на реальный сервер, как   при просмотре страниц в браузере текст был написан непонятными иероглифами! Знакома такая ситуация?

В этой статье я постараюсь расставить все точки над «и», чтобы у Вас больше не возникало ни каких сложностей с кодировкой!

Что такое «кодировка»?

Для начала давайте определимся, что такое «кодировка»! Кодировка — это таблица соответствия машинных кодов и символов алфавита. Есть какая-то последовательность машинных символов, которую умный компьютер, в соответствии с выбранной кодовой таблицей, заменяет на понятные нам буквы.

Какие кодировки бывают?

Кодировки символов делятся на два типа: универсальные (единые для всех языков) и узкого назначения. Первая группа называется unicode (utf, ucs).

Кодировки бывают 8-и, 16-и и 32-х битные. Бывают еще 7-и битные, но на сегодня это экзотика.

  • 32-х битные символы - utf-32 - могут потребоваться разве что для поддержки символов больше 65535 - по документации там значатся редкие языки и различные символы. Например, древнеперсидские символы, музыкальные ноты, всякие иероглифы. Вероятность того, что нам с вами придется с ними работать, мала.
  • 16-и битные символы - utf-16 - в сети встречаются. Обычно, это восточные сайты с иероглифами. Utf-16 бывает двух видов: BE (Big Endian) и LE (Little Endian). Они различаются порядком расположения байт в символе. Кстати, к utf-32 это тоже относится.
  • 8-ми битные кодировки - самые распространенные и самые запутанные.

Самая "стандартная" из них - iso-8859-1 (она же latin1, она же ascii). Ее первые 127 символов присутствуют во всех остальных стандартизированных кодировках.

Среди русских 8-и битных кодировок встречаются: windows-1251 (она же cp1251), koi8-r , cp866 (она же OEM, она же DOS-кодировка, она же альтернативная кодировка ГОСТа) и iso-8859-5

Также есть 8-и битная кодировка для Unicode - utf-8. Коды символов больше 127 описываются в ней несколькими байтами - от 2 до 4. Символы ascii будут занимать по одному байту на символ. Русские буквы, как и буквы многих европейских языков с кодами символов меньше 2048, будут занимать по два байта. Коды до 65535 вписываются в три байта, а прочие - 4 байта.

Кодировок море, но на сегодняшний день для Рунета наиболее популярными являются кодировки windows-1251 и utf-8, и именно между этими кодировками стоит выбор пользователя при создании веб-странички.

Для себя я этот выбор уже сделал давно и он пал на кодировку UTF-8, так как эта кодировка намного богаче  windows-1251. И вот почему: UTF-8 содержит в своей таблице соответствия такие знаки, как → ←↓↑. А в windws-1251 вместо этих символов вот что: > <v^. Передача данных на сервер через AJAX происходит в кодировке UTF-8, поэтому нет необходимости лишний раз производить перекодировку символов. Еще в utf-8 есть знак «евро»; а еще utf-8 позволяет в одном HTML-файле совмещать кучу разнообразных специфических символов, используемых в таких языках как грузинский, иврит, китайский, японский; а еще utf-8 в кодировках HTML — это правило хорошего тона.

Думаю преимущества UTF-8 очевидны и Вы в своих скриптах будете тоже использовать UTF-8!

Теперь давайте поговорим о том, как же задать правильную кодировку для файла. Для этого есть множество редакторов. Наиболее популярным среди новичков является Dreamweaver. Поэтому я наглядно покажу, как в Dreamweaver задается кодировка документа.

Создавая новый файл, обращайте внимание на то, в какой кодировке он будет создан. Для этого в окне создания нового документа File → New (Ctrl+N) воспользуйтесь кнопкой Preferences…

И посмотрите, что задано в качестве кодировки по умолчанию:

Перекодировать открытый HTML-файл в Dreamweaver можно в диалоге Page Properties, который запускается из меню Modify → Page Properties (Ctrl + J).

Выбирайте требуемую кодировку, нажимайте ОК и все,  новая кодировка для документа задана.

Теперь давайте выясним, каким образом браузер понимает в какой кодировке загружен файл?

Здесь есть несколько вариантов:

1. Используя МЕТА-тег мы сами сообщаем браузеру в какой кодировке загружен файл.

Делается это так:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Данный мета-тег необходимо пеместить между тегами <head></head>. Если Вы вдруг решили изменить кодировку у файла, то не забывайте и менять этот МЕТА-тег на актуальное значение

2. При помощи файла .htaccess. Очень часто сервер принудительно задает заголовки для загруженных файлов и сообщает браузеру кодировку по умолчанию. Если такое случается, то браузер не обращает во внимание кодировку заданную в МЕТА-теге и отображает страницу в той кодировке,  которую сообщил сервер. Для того чтобы отключить кодировку по умолчанию, необходимо в корне сайта создать файл .htaccess

Файл этот предназначен для дополнительной конфигурации сервера. Действие .htaccess-директив распространяется на все файлы и подкаталоги, которые находятся в том каталоге, куда вы сохранили файл .htaccess.

После того как этот файл создан, в него необходимо поместить следующую директиву:

AddDefaultCharset UTF-8

На большинстве хостингов эта директива срабатывает и файлы отдаются в нужной кодировке. Но некоторые хостинги не обращают внимание на эту директиву, поэтому для них  нужно прописать следующее:

<IfModule mod_charset.c>
 CharsetDisable On
</IfModule>
AddDefaultCharset UTF-8
php_value default_charset utf-8

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

Задание кодировки в MySQL

Если у Вас PHP-сайт, который работает с базой данных и вся информация выводится в иероглифах, то сразу после подключения к серверу необходимо выполнить запрос:

set names utf8 или mysql_set_charset('utf8');

т.е. так:

$DB_host =  "localhost"; // имя сервера MySQL

$DB_user = "root";    // имя пользователя MySQL

$DB_pass = "pass";    // пароль на сервере MySQL

$DB_name = "database";     // имя  базы данных

/* Соединяемся с сервером MySQL */
$db=mysql_connect($DB_host,$DB_user,$DB_pass);

/* Выбираем  необходимую базу данных */
mysql_select_db($DB_name, $db);

/* Устанавливаем кодировку */
mysql_query('SET NAMES utf8');

/* Или так */
mysql_set_charset('utf8',$db);

Атрибут accept-charset для форм

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

Как же решается эта проблема?

Для этих целей существует специальный атрибут для тега <form> - accept-charset

<form action="send.php" method="post" accept-charset="utf-8">

Атрибут accept-charset — устанавливает кодировку, в которой сервер может принимать и обрабатывать данные формы.

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

Все бы хорошо, но если бы не всеми любимый Internet Explorer, который не понимает этот атрибут и посылает данные в той кодировке, которая установлена на странице.

К счастью данный баг решается очень просто!

В форму необходимо добавить скрытое поле в котором передать значение для идентификации кодировки

<input type="hidden" name="utf8" value="&#9760;">

Надеюсь данная статья была Вам полезна! Пишите в комментариях Ваши ситуации и способы их решения!

Оцените эту статью:



Интересно почитать

    Получать новые материалы этого сайта на свой email адрес?

    Отправлять мне комментарии по эл. почте?

Реклама

Топ комментаторы

  • Иван (1)

Нашли ошибку в тексте

Система Orphus
https://biznesguide.ru/other/136.html
4,62 из 5 на основе 29 оценок.
Твиттер Facebook Google plus RSS