Кодирование символов
Все символьные обозначения букв, цифр, специальных знаков и иероглифов на самом деле представляют из себя битовые комбинации – различные сочетания битов. Так, например, из 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 вставить знак ö, или ö, то получим символ ö, применяемый в немецком языке. Этим и объясняется сильное увеличение объема документа в три-четыре раза, когда для его создания используется WYSIWYG-редактор, так как он заменяет каждую букву русского текста на такую ссылку.
- По-русски: Я хочу сделать покупку
- Deutsch: Ich möchte einkaufen
- Englich: I want to buy someting
Еще один вариант – набрать текст в текстовом процессоре, например в MS Word, а после сохранить его как файл HTML, при этом кодировку документу выбрать, скажем UTF-8.
Таблица символов
Ниже приведена таблица наиболее часто встречающихся символов и их кодов:
Знак | код | Знак | код | Знак | код | Знак | код | Знак | код | Знак | код |
“ | " | ] | ] | ˜ | ˜ | Ó | Ó | Ď | Ď | ʼn | ʼn |
# | # | ^ | ^ | ™ | ™ | Ô | Ô | ď | ď | Ŋ | Ŋ |
$ | $ | _ | _ | š | š | Õ | Õ | Đ | Đ | ŋ | ŋ |
% | % | ` | ` | › | › | Ö | Ö | đ | đ | Ō | Ō |
& | & | a | a | œ | œ | × | × | Ē | Ē | ō | ō |
‘ | ' | b | b | |  | Ø | Ø | ē | ē | Ŏ | Ŏ |
( | ( | c | c | ž | ž | Ù | Ù | Ĕ | Ĕ | ŏ | ŏ |
) | ) | d | d | Ÿ | Ÿ | Ú | Ú | ĕ | ĕ | Ő | Ő |
* | * | e | e |   | Û | Û | Ė | Ė | ő | ő | |
+ | + | f | f | ¡ | ¡ | Ü | Ü | ė | ė | Œ | Œ |
, | , | g | g | ¢ | ¢ | Ý | Ý | Ę | Ę | œ | œ |
– | - | h | h | £ | £ | Þ | Þ | ę | ę | Ŕ | Ŕ |
. | . | i | i | ¤ | ¤ | ß | ß | Ě | Ě | ŕ | ŕ |
/ | / | j | j | ¥ | ¥ | à | à | ě | ě | Ŗ | Ŗ |
0 | 0 | k | k | ¦ | ¦ | á | á | Ĝ | Ĝ | ŗ | ŗ |
1 | 1 | l | l | § | § | â | â | ĝ | ĝ | Ř | Ř |
2 | 2 | m | m | ¨ | ¨ | ã | ã | Ğ | Ğ | ř | ř |
3 | 3 | n | n | © | © | ä | ä | ğ | ğ | Ś | Ś |
4 | 4 | o | o | ª | ª | å | å | Ġ | Ġ | ś | ś |
5 | 5 | p | p | « | « | æ | æ | ġ | ġ | Ŝ | Ŝ |
6 | 6 | q | q | ¬ | ¬ | ç | ç | Ģ | Ģ | ŝ | ŝ |
7 | 7 | r | r | | ­ | è | è | ģ | ģ | Ş | Ş |
8 | 8 | s | s | ® | ® | é | é | Ĥ | Ĥ | ş | ş |
9 | 9 | t | t | ¯ | ¯ | ê | ê | ĥ | ĥ | Š | Š |
: | : | u | u | ° | ° | ë | ë | Ħ | Ħ | š | š |
; | ; | v | v | ± | ± | ì | ì | ħ | ħ | Ţ | Ţ |
< | < | w | w | ² | ² | í | í | Ĩ | Ĩ | ţ | ţ |
= | = | x | x | ³ | ³ | î | î | ĩ | ĩ | Ť | Ť |
> | > | y | y | ´ | ´ | ï | ï | Ī | Ī | ť | ť |
? | ? | z | z | µ | µ | ð | ð | ī | ī | Ŧ | Ŧ |
@ | @ | { | { | ¶ | ¶ | ñ | ñ | Ĭ | Ĭ | ŧ | ŧ |
A | A | | | | | · | · | ò | ò | ĭ | ĭ | Ũ | Ũ |
B | B | } | } | ¸ | ¸ | ó | ó | Į | Į | ũ | ũ |
C | C | ~ | ~ | ¹ | ¹ | ô | ô | į | į | Ū | Ū |
D | D | |  | º | º | õ | õ | İ | İ | ū | ū |
E | E | € | € | » | » | ö | ö | ı | ı | Ŭ | Ŭ |
F | F | |  | ¼ | ¼ | ÷ | ÷ | IJ | IJ | ŭ | ŭ |
G | G | ‚ | ‚ | ½ | ½ | ø | ø | ij | ij | Ů | Ů |
H | H | ƒ | ƒ | ¾ | ¾ | ù | ù | Ĵ | Ĵ | ů | ů |
I | I | „ | „ | ¿ | ¿ | ú | ú | ĵ | ĵ | Ű | Ű |
J | J | … | … | À | À | û | û | Ķ | Ķ | ű | ű |
K | K | † | † | Á | Á | ü | ü | ķ | ķ | Ų | Ų |
L | L | ‡ | ‡ | Â | Â | ý | ý | ĸ | ĸ | ų | ų |
M | M | ˆ | ˆ | Ã | Ã | þ | þ | Ĺ | Ĺ | Ŵ | Ŵ |
N | N | ‰ | ‰ | Ä | Ä | ÿ | ÿ | ĺ | ĺ | ŵ | ŵ |
O | O | Š | Š | Å | Å | Ā | Ā | Ļ | Ļ | Ŷ | Ŷ |
P | P | ‹ | ‹ | Æ | Æ | ā | ā | ļ | ļ | ŷ | ŷ |
Q | Q | Œ | Œ | Ç | Ç | Ă | Ă | Ľ | Ľ | Ÿ | Ÿ |
R | R | |  | È | È | ă | ă | ľ | ľ | Ź | Ź |
S | S | Ž | Ž | É | É | Ą | Ą | Ŀ | Ŀ | ź | ź |
T | T | |  | Ê | Ê | ą | ą | ŀ | ŀ | Ż | Ż |
U | U | |  | Ë | Ë | Ć | Ć | Ł | Ł | ż | ż |
V | V | ‘ | ‘ | Ì | Ì | ć | ć | ł | ł | Ž | Ž |
W | W | ’ | ’ | Í | Í | Ĉ | Ĉ | Ń | Ń | ž | ž |
X | X | “ | “ | Î | Î | ĉ | ĉ | ń | ń | ſ | ſ |
Y | Y | ” | ” | Ï | Ï | Ċ | Ċ | Ņ | Ņ | ƀ | ƀ |
Z | Z | • | • | Ð | Ð | ċ | ċ | ņ | ņ | Ɓ | Ɓ |
[ | [ | – | – | Ñ | Ñ | Č | Č | Ň | Ň | Ƃ | Ƃ |
\ | \ | — | — | Ò | Ò | č | č | ň | ň | ƃ | ƃ |