Пособие по ИиИТ

Глава 3
Кодирование текста

В этой главе мы повторим, как в компьютерах кодируется текст.

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

При кодировании текста для каждого его символа отводится, обычно, по 1 байту. Это позволяет использовать 28=256 различных символов. Соответствие между символом и его кодом, вообще говоря, может быть выбрано совершенно произвольно. Однако на практике необходимо иметь возможность прочесть на одном компьютере текст, созданный на другом. Поэтому таблицы кодировок стараются стандартизовать. Практически все использующиеся сейчас таблицы основаны на "американском стандартном коде обмена информацией" ASCII5. Этот стандарт определяет значения для нижней половины кодовой таблицы -- первых 127 кодов (32 управляющих кода, основные знаки препинания и арифметические символы, цифры и латинские буквы). В результате, эти символы отображаются верно, какая бы кодировка не использовалась на конкретном компьютере. Хуже обстоит дело с "национальными" символами и "типографскими" знаками препинания. А особенно не повезло языкам, использующим кириллический алфавит (русскому, украинскому, белорусскому, болгарскому и т.д.). Например, для русского языка сейчас широко используются пять таблиц кодировок:

На самом деле, проблема не столь уж велика. Если мы знаем, как представлен исходный текст и какая таблица используется нашим компьютером, преобразование выполнить очень легко -- нужно просто поменять одни коды на другие (по таблице перекодировки). Для этого служат специальные программы -- текстовые конверторы. В последнее время появляются конверторы, способные самостоятельно определять исходную кодировку текста и даже умеющие "расшифровывать" текст после нескольких неправильных перекодировок.

Шестнадцатеричные коды некоторых букв
 KOI-8rWinAltMacISOUnicode
АE1C08080B00410
БE2C18181B10411
ВF7C28282B20412
аC1E0A0E0D00430
бC2E1A1E1D10431
вD7E2A2E2D20432

Заметим, кстати, что существуют и специальные шрифты (так называемые, дингбатсы), которые содержат не буквы, а специальные символы, например, математические или музыкальные; элементы орнаментов, пиктограммы .

Сейчас, когда объем памяти компьютеров чрезвычайно вырос, уже нет нужды очень сильно экономить при кодировании текста. Можно позволить себе "роскошь" тратить для хранения текста вдвое больше памяти (выделяя для каждого символа не 1, а 2 байта). При этом появляется возможность разместить в кодовой таблице -- каждый на своем месте -- не только буквы европейских алфавитов (латинского, кириллического, греческого), но и буквы арабского, грузинского и многих других языков и даже большую часть японских и китайских иероглифов. Ведь два байта могут хранить уже число от 0 до 65535.

Двухбайтная международная кодировка Unicode, разработанная несколько лет назад, теперь начинает внедряться на практике.

Контрольные вопросы

  1. Каким образом кодируется на компьютере текст?
  2. Вы открываете текстовый файл, и видите на экране бессмысленный набор символов. С чем это может быть связано? Какие действия нужно предпринять, чтобы прочесть текст?
  3. В чем преимущества и недостатки кодировки Unicode?

Примечания

  1. ASCII -- American Standard Code for Information Interchange
  2. Точнее, альтернативная модифицированная. Такое название сохранилось с тех времен, когда кроме нее были еще "основная кодировка ГОСТ" и "альтернативная кодировка ГОСТ"
  3. Удивительно, но факт: при разработке этой кодировки не учли одну букву украинского алфавита. Поэтому украинский -- единственный кириллический язык, для которого на Макинтошах есть своя отдельная кодировка -- Macintosh Ukrainian
Предыдущая Содержание Следующая