
10.3. Кодирование текста
Не возникает никаких проблем и при кодировании любой информации, представимой с помощью ограниченного набора символов – алфавита. Для этого достаточно пронумеровать все знаки этого алфавита и затем записывать в память компьютера (и, естественно, обрабатывать) соответствующие номера.
При кодировании текста для каждого его символа отводится, обычно, по 1 байту. Это позволяет использовать 28=256 различных символов. Соответствие между символом и его кодом, вообще говоря, может быть выбрано совершенно произвольно. Однако на практике необходимо иметь возможность прочесть на одном компьютере текст, созданный на другом. Поэтому таблицы кодировок стараются стандартизовать. Практически все использующиеся сейчас таблицы основаны на "американском стандартном коде обмена информацией" ASCII (American Standard Code for Information Interchange). Этот стандарт определяет значения для нижней половины кодовой таблицы – первых 127 кодов (32 управляющих кода, основные знаки препинания и арифметические символы, цифры и латинские буквы). В результате, эти символы отображаются верно, какая бы кодировка не использовалась на конкретном компьютере. Хуже обстоит дело с "национальными" символами и "типографскими" знаками препинания. А особенно не повезло языкам, использующим кириллический алфавит (русскому, украинскому, белорусскому, болгарскому и т.д.). Например, для русского языка сейчас широко используются пять таблиц кодировок:
- CР866 (DOS-альтернативная модифицированная) – на РC-совместимых компьютерах при работе с операционными системами DOS и OS/2, а также в любительской международной сети Фидо (Fidonet).
- CР1251 (Windows-кодировка) – на РC-совместимых при работе в ОС Windows
- KOI-8r – самая старая из использующихся до сих пор кодировок. Применяется на компьютерах, работающих в ОС UNIX, является фактическим стандартом для русских текстов в сети Интернет.
- Macintosh Cyrillic – предназначена для работы со всеми кириллическими языками на Макинтошах.
- ISO-8859 – кодировка задумывалась как международный стандарт для кириллических текстов, однако на территории России практически не применяется.
На самом деле, проблема не столь уж велика. Если мы знаем, как представлен исходный текст и какая таблица используется нашим компьютером, преобразование выполнить очень легко – нужно просто поменять одни коды на другие (по таблице перекодировки). Для этого служат специальные программы – текстовые конверторы. Есть также конверторы, способные самостоятельно определять исходную кодировку текста и даже умеющие "расшифровывать" текст после нескольких неправильных перекодировок.
Сейчас, когда объем памяти компьютеров чрезвычайно вырос, уже нет нужды очень сильно экономить при кодировании текста. Можно позволить себе "роскошь" тратить для хранения текста вдвое больше памяти (выделяя для каждого символа не 1, а 2 байта). При этом появляется возможность разместить в кодовой таблице – каждый на своем месте – не только буквы европейских алфавитов (латинского, кириллического, греческого), но и буквы арабского, грузинского и многих других языков и даже большую часть японских и китайских иероглифов. Ведь два байта могут хранить уже число от 0 до 65535.