/Зачем в HTML файлах добавлять строку с "Content-Type: text/plain; charset="

Как сохранить информацию о том, в какой кодировке записана строка? Для этого существуют стандартные способы. В заголовок электронного письма надо поместить строку типа

Content-Type: text/plain; charset="UTF-8"


Для веб-страниц первоначально предполагалось, что веб-сервер должен возвращать аналогичный заголовок http Content-Type вместе со страницей - не в самом HTML, а в числе одного из служебных заголовков, посылаемых перед страницей HTML.

С этим связаны некоторые трудности. Допустим, что у вас есть большой сервер с множеством сайтов и сотнями страниц, написанных массой людей на разных языках и в тех кодировках, которые счел нужным сгенерировать тот экземпляр Microsoft FrontPage, который был у автора. Сам вебсервер не сможет узнать, в какой кодировке записан каждый файл, и не сможет посылать заголовок Content-Type.

Удобно было бы поместить Content-Type файла HTML в сам файл HTML с помощью какого-нибудь специального тега. Конечно, поборники чистоты сойдут от этого с ума: как можно прочесть файл HTML, если неизвестно, в какой он кодировке?! К счастью, почти все общеупотребительные кодировки одинаково ведут себя с символами от 32 до 127, поэтому всегда можно добраться до этого места на странице HTML, не начав выводить странные символы:

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


Но тег meta действительно должен быть в самом начале раздела , потому что веб-броузер, обнаружив этот тег, прекращает разбор страницы и возобновляет его после повторной интерпретации всей страницы в указанной вами кодировке.

Что делают веб-броузеры, если не находят Content-Type ни в заголовках http, ни в теге meta? Internet Explorer делает любопытную вещь: он пытается угадать язык и кодировку по частотам встречаемости байтов в типичных текстах с типичной кодировкой в различных языках. Такой алгоритм может оказаться успешным, поскольку в прежних 8-разрядных кодовых страницах буквы национальных алфавитов занимали разные диапазоны между 128 и 255 и поскольку для каждого естественного языка есть характерная гистограмма использования букв. Странно, но этот метод оказывается эффективным так часто, что наивные авторы веб-страниц, не имеющие представления о том, что у них должен быть заголовок Content-Type, смотрят на свою страницу в веб-броузере и думают, что все в порядке, пока в один прекрасный день не напишут нечто, не вполне соответствующее частотному распределению букв в их языке, и Internet Explorer не решит, что это корейский язык, и не отобразит страницу соответствующим образом. Из вышесказанного, как мне кажется, следует, что высказывание Джона Постела (Jon Postel) о необходимости «либерального отношения к тому, что принимаешь, и консервативного - к тому, что отправляешь» явно не может служить хорошим инженерным принципом. И все-таки, что делает несчастный посетитель этого веб-сайта, написанного на болгарском языке, но показываемого как корейский (да и не корейский даже)? Он открывает пункт меню «Просмотр/Кодировка» и перебирает разные кодировки (для восточноевропейских языков их не меньше десятка), пока картинка не станет понятной. Если только он знает, что это можно сделать, потому что большинство этого не знает.



Оставить свой ответ:

Имя:*
E-Mail:
Вопрос:
Skolko buдет пять пдюс сeмь?
Ответ:*
QQpedia21.ru - cамые интересные вопросы