Тип содержимого “text/css”, хотя он
и не зарегистрирован, используется для иерархических, или каскадных, таблиц
стилей (CSS).
Тип документа “text/html”дополнительно расширяется указанием коди
ровки страницы charset (набор символов) – тогда браузер выводит ее сразу
в заданной кодировке. Однако обратите внимание: если текст документа написан
в windows1251, а значение указано charset=KOI8-r, то изменить кодировку
в браузере невозможно и текст совершенно не читается.
Формат метатэга следующий (для типа содержимого “text/html”и набора
символов windows1251):
windows-1251”>
Этапы большого пути
Немного о кодировках
Кодировка представляет собой таблицу, где каждому символу – буквам алфави
та, цифрам и специальным знакам – соответствует свой уникальный номер, код
символа.
Полностью стандартизирована лишь первая часть таблицы, так называемый
ASCIIкод – первые 128 символов, включающих цифры и буквы латинского ал
фавита. Поэтому с ними никогда не бывает проблем. Вторая же часть таблицы
(всего в ней 256 символов – по числу состояний, которые может принять один
байт) отведена под специальные символы. Она используется для кодировки сим
волов национальных алфавитов, причем для каждого языка и в каждой стране
она различна. При этом для букв русского языка создано пять различных кодиро
вок, то есть одному символу соответствуют разные цифровые коды. Таким обра
зом, при неправильной кодировке мы получим совершенно нечитаемый текст.
На заре развития вычислительной техники очень широко использовалась ко
дировка с кириллицей KOI8. Она появилась в семидесятые годы при адаптации
операционной системы UNIX к русскому языку – персональных компьютеров
тогда еще не было. KOI8 – до сих пор основная кодировка в UNIX. Потом нача
лось победное шествие персональных компьютеров IBM, а с ними – операцион
ных систем MS DOS, имевших DOSкодировку (или кодовую страницу 866).
Параллельно развивались компьютеры Macintosh, и, разумеется, была придума
на еще одна кодировка – MAC. Наконец, с появлением операционной системы
Microsoft Windows появилась и новая windowsкодировка (кодовая страница 1251).
Онато и стала самой распространенной в России.
Еще один вариант связан с попытками стандартизации кодировок на уровне
всей планеты. Разработчики из ISO, международной организации по стандартам, ,
создали еще одну кодировку и назвали ее ISO88595. В настоящее время она прак
тически не применяется (повидимому, ее используют лишь в базе данных Oracle),
однако поддержка данной кодировки предусмотрена во всех браузерах.
В настоящее время создана универсальная кодировка UNICODE, в которую
вошли все языки мира, поэтому на каждый символ в ней отведено по два байта.
Таким образом, максимальное число знаков в таблице расширилось до 65 535.
Сейчас UNICODE находит свое применение, но пока не слишком широкое.
Правильное отображение символов национальных алфавитов касается как Web
серверов, так и браузеров. Они должны осуществлять информационный обмен на
одном языке и в одной кодировке, и только в этом случае сообщения будут доступны.
Сервер должен иметь эффективную систему предварительного оповещения
о том, в какой кодировке будет прислана страница. Клиентской программе (брау
зеру) необходимо принять такое сообщение и, соответственно, настроиться на
нужное отображение. Если все сделать правильно, то никаких трудностей не воз
никнет. Однако при некорректной настройке Webсервера он сообщает об одной
кодировке (например, windows1251), а страницу пересылает в другой (напри
мер, в KOI8). Пользуясь указаниями сервера, браузер, естественно, ошибается
и отображает страницу неверно.
Метаданные
Как показано выше, можно задать кодировку документа не на сервере, а непо
средственно в HTMLкоде – с помощью метатэга со свойством Content-type. Но
не все так просто. В России распространен способ, при котором сервер автомати
чески определяет, в какой кодировке приходит запрос от клиента, и пересылает
страницу Webбраузеру уже перекодированной. Вот тутто использование ука
занного метатэга и может сыграть с вами злую шутку. Дело в том, что указания на
странице имеют приоритет над командами, присылаемыми Webсервером, и, пра
вильно перекодировав страницу, сервер не может изменить содержимое метатэга.
Происходит несовпадение реальной кодировки, в которой пришел документ,
и указаний в тэге META. Такую страницу нельзя будет нормально просмотреть
и перекодировать средствами браузера. Выбор кодировки вручную в данном слу
чае не поможет, так как метатэг имеет приоритет и над установками браузера.
Единственный способ прочитать документ – это сохранить страницу и удалить
злосчастный тэг.
Учитывая все вышесказанное, данный тэг можно вообще не применять. Тогда
просмотр будет вестись в той кодировке, на которую настроен браузер, если сервер
не пришлет уведомление о другой кодировке документа. В этом случае клиент смо
жет легко ее переключить.
5th Фев 2011
|
Теги:
|