Учебник HTML >>Языковые стандарты

Кодирование символов

Все символьные обозначения букв, цифр, специальных знаков и иероглифов на самом деле представляют собой битовые комбинации - различные сочетания битов. Так, например, из 8 битов, в различных комбинациях, теоретически может получиться 256 последовательностей, в свою очередь каждой из этих последовательностей присвоен символ, другими словами из 8 битов может получиться 256 символов. Каждому такому символу присваивается свой код и из них составляется таблица - кодировка символов. Соответственно таких таблиц может быть как минимум по одной на каждый из земных языков. На самом деле их гораздо больше, чем это нужно, все они были созданы в разное время, для различных платформ, и кодируются они не только при помощи 8 битов, но и 16 и даже 32.

Самым популярным из стандартов кодирования символов, в настоящий момент является стандарт ISO 646, созданный международной организацией стандартизации ISO, а точнее его первые 128 символов, которые кодировались при помощи 8 битов, но при этом первый бит всегда равнялся нулю. Ему было присвоено имя ASCII и иногда его еще называют 7-битовым стандартом. Он используется большинством компьютерных машин для написания символов латинского алфавита, а также для синтаксиса всех языков программирования и разметки, а также для всех типов данных.

Для поддержки языков, использующих в своем алфавите символы отличные от латинских, был использован восьмой бит байта, а это дало возможность добавить еще 128 дополнительных символов. Была создана серия кодировок ISO 8859, в которых первая часть - это 128 символов ASCII. Самая первая из них, ISO 8859-1, еще ее называют ISO Latin-1 или 8-битовой ASCII, содержит в себе практически все европейские нестандартные символы, а кодировка ISO 8859-5 является русской.

В свою очередь, организация Unicode Consortium создала на основе 16-битового кодирования одноименную кодировку, в которую решено было вместить 65536 символов, каждый весом в два байта. Первые 256 символов Unicode в точности соответствуют ISO 8859-1, а саму кодировку компьютерное сообщество признало и использует все чаще, и если основной кодировкой в HTML раньше считалась ISO 8859-1, то с появлением HTML 4.0, основной кодировкой стала Unicode.

Не желая останавливаться на достигнутом, ISO разработала новый, 32-битовый стандарт кодирования ISO 10646. Он совместим с Unicode, а также имеет несколько своих производных фоматов, одна из которых - формат UTF-8 внедрен в Windows.

Особенности работы с кодировками

Для нормального отображения символов той или иной кодировки, и сервер, и браузер должны обменяться соответствующей служебной информацией. Для этого протокол HTTP, при помощи поля Accept-Charset, позволяет браузеру послать сообщение на сервер о том, какие кодировки в нем доступны и в каком порядке очередности. При этом сервер может выбрать из вариантов документ, исполненный в требуемой кодировке, сообщить браузеру информацию о том, в какой кодировке будет прислана страница, или автоматически перекодировать ее и переслать браузеру. Если такая возможность не реализована на сервере, то присланный документ можно просмотреть в различных кодировках, выбрав их в настройках браузера вручную.

Еще одним способ сообщить браузеру о стандарте кодирования может сводиться к следующему - автор документа создает служебную информацию для браузера в тэге <МЕТА>, между тэгами <HEAD> и </HEAD>, запись эквивалентную заголовку HTTP, например:
<META HTTP-EQUIV="Content-Type" content="text/html; charset=windows-1251">
Встретив такую инструкцию, браузер автоматически переключается на нужную кодировку.

Русские кодировки

Кодировок, русифицирующих сеть, существует гораздо больше, чем хотелось бы, их как минимум пять: KOI-8 (созданная для UNIX), 866 (для MS DOS), Windows-1251, ISO 8859-5, MAC. Ввиду распространения такого количества русских кодировок, в русской части сети очень распространен способ, когда сервер имеет систему автоматического перекодирования документа на лету, в зависимости от того, какой ответ пришел о браузера.

В итоге, часто происходит например, следующее: документ написан в KOI-8 и имеет об этом запись в тэге <МЕТА>, сервер определяет кодировку браузера Windows-1251 и автоматически перекодирует документ в нее, браузер же получив инструкцию прописанную в тэге <МЕТА> переключается в свою очередь на KOI-8 и пользователь не может прочесть текст. Выход может быть в том, чтобы вовсе не указывать charset в тэге <МЕТА>, в документах, которые будут лежать на таком сервере, либо пользователь сохраняет документ на диске и удаляет эту инструкцию из <МЕТА> вручную.

Создание многоязыковых документов

Иногда web-мастер сталкивается с необходимостью разместить в одном документе текст на двух и более языках. Как правило, это небольшие фрагменты текста, чаще реклама или ссылки, поэтому очень часто их выполняют в виде рисунков экономичного формата .gif Но бывают также случаи, когда на сайте действительно необходимо разместить именно текст. В таком случае можно воспользоваться мнемоническими ссылками на символы Unicode, это значит, что автор использует для создания документа обычную кодировку, а вместо недостающих символов другого языка вставляет их код в таблице Unicode.

Например, если в документ Windows-1251 вставить знак &#246;, или &ouml;, то получим символ o, применяемый в немецком языке. Этим и объясняется сильное увеличение объема документа в три-четыре раза, когда для его создания используется WYSIWYG-редактор, так как он заменяет каждую букву русского текста такой ссылкой.

Таблица символов

Ниже приведена таблица кодов используемых знаков, но не все из них доступны для ввода с клавиатуры.
Знак Код  Знак Код  Знак Код  Знак Код 
" &#34; # &#35; $ &#36; % &#37;
& &#38; ' &#39; ( &#40; ) &#41;
* &#42; + &#43; , &#44; - &#45;
. &#46; / &#47; : &#58; ; &#59;
< &#60; = &#61; > &#62; ? &#63;
@ &#64; [ &#91; \ &#92; ] &#93;
^ &#94; _ &#95; ` &#96; { &#123;
| &#124; } &#125; ~ &#126; &#128;
&#130; ? &#131; &#132; &#133;
&#134; &#135; ? &#136; &#137;
S &#138; &#139; &#145; &#146;
&#147; &#148; &#149; &#150;
&#151; ? &#152; &#153; s &#154;
&#155; ¤ &#164; ? &#165; ¦ &#166;
§ &#167; ? &#168; © &#169; ? &#170;
« &#171; ¬ &#172; ­ &#173; ® &#174;
? &#175; ° &#176; ± &#177; ? &#178;
µ &#181; &#182; · &#183; » &#187;

Hosted by uCoz