Загадочное семейство
 
04.11.2003
Владимир Лидовский


 
стр. 1
стр. 2 >>

Работая с Интернетом и электронной почтой, многие из вас наверняка не раз сталкивались с проблемой выбора кодировки для букв русского алфавита. Но что стоит за всеми этими малопонятными названиями типа cp866, koi-8r, UTF-8 или ISO 8859-5? И как вообще представляются символы в компьютере?

Прародитель

Для компьютерного представления текста необходимо каждому знаку присвоить некоторое число — его код. Все современные таблицы кодировок происходят от возникшей еще в 60-е годы 7-разрядной таблицы ASCII (American Standard Code for Information Interchange), которая содержит 33 кода команд или управляющих символов, большая часть которых сегодня не используется, и 95 кодов для различных знаков, достаточных для работы с английскими текстами. При 7-разрядном кодировании каждому символу сопоставляется 7 бит, то есть число в диапазоне от 0 до 127. В простых текстовых (plain text) файлах допустимы только управляющие символы, отмечающие концы строк и переходы на позиции табуляции. Скажем, маркер конца строки в Linux — это код 10, в Macintosh OS — 13, в CP/M, DOS и Microsoft Windows — последовательность кодов 13, 10.

Для аналогичного представления знаков русского алфавита ныне применяется таблица КОИ-7 (Код для Обмена Информацией 7-битный): это та же ASCII, но вместо строчных латинских букв и шести других символов в ней размещены заглавные буквы кириллицы, а вместо заглавных — строчные. У такого кодирования есть два важных преимущества: оно компактно (для доступа к латинским и другим буквам и возврата обратно к кириллице используются специальные управляющие коды) и вводит естественную транслитерацию, что позволяет работать с текстами на русском единообразно в разных компьютерных системах.

ASCII-коды все еще довольно широко используются для текстов на английском, особенно в США, а также в системах e-mail. Стандартные текстовые утилиты UNIX (grep, sed, awk) вплоть до середины 90-х по умолчанию могли работать только с ASCII — подключение 8-го бита требовало их перекомпиляции. Сегодня 7-битная кириллица встречается, пожалуй, только в системе для подготовки научных публикаций TEX, да и то неявно, а для кодирования символов алфавитов большинства языков используется 8-разрядное кодирование, при котором каждому символу сопоставляется 8 бит или 1 байт кода. Код представляет собой число в диапазоне от 0 до 255, а первые 128 символов при таком кодировании аналогичны ASCII.

Потомок

Международный стандарт ISO/IEC 8859-1 стал в наши дни де-факто заменой для ASCII. В нем первые 32 кода, числа 128–159, соответствуют почти неиспользуемым управляющим символам, общим для всех таблиц кодировки ISO. Хотя 8859-1 может использоваться для текстов почти на всех западноевропейских языках, он не полностью покрывает нужды французского и финского. Этот недостаток, а также отсутствие знака для новой общеевропейской валюты привели в 1999 году к возникновению кодировки 8859-15, в которой изменены значения восьми кодов 8859-1: 164 (A4) —  (20ac), 166 (A6) — Љ (0160), 168 (A8) — љ (0161), 180 (B4) — Ћ (017d), 184 (B8) — ћ (017e), 188 (BC) — Њ (0152), 189 (BD) — њ (0153), 190 (BE) — џ (0178).

Всего в ISO 8859 определяются четырнадцать 8-битных таблиц кодировки: так, 8859-6 содержит набор арабских букв, 8859-7 — греческих, а 8859-8 — иврита.

Законные наследники

Существует пять признанных во всем мире таблиц кодировки русских букв:
- ISO 8859-5 — стандарт международной организации по стандартизации для кириллицы, в РФ используется редко. Базируется на основной кодировке ГОСТ. Псевдографика отсутствует.
- Кодовая страница (code page, CP) 866 основана на альтернативной кодировке ГОСТ. Она создана специально для ОС MS-DOS, в которой часто используются символы псевдографики. Практически вытеснена следующей таблицей.
- Кодовая страница 1251 для Microsoft Windows стала популярной благодаря огромному влиянию фирмы Microsoft на рынок компьютерных технологий. Кроме того, в ней отсутствует ненужная в графических средах поддержка символов псевдографики и гораздо полнее, чем в других кодировках, представлены такие символы, как ©, ®, №, различные виды кавычек, тире и т. п.
- На базе ГОСТ КОИ-8 сделана koi8-r (кодовая страница 878) — применяется в мире Linux. В ней естественным образом обеспечивается связь с 7-разрядным кодированием: отбрасыванием восьмого бита из кода буквы русского алфавита koi8-r получается код той же буквы в КОИ-7. Кодировка поддерживает символы псевдографики, занимающие около половины всех кодов. В 1993 году стандартизирована в Интернете, а в начале XXI века появились ее модификации koi8-u и koi8-ub — с дополнениями до украинского и затем, соответственно, до белорусского. В koi8-ub вместо символов псевдографики включаются знаки разнообразных кавычек и тире, №, евро, иены и т. п. Эта кодировка находится на начальной стадии внедрения, и ее перспективы пока туманны.
- Кодовая страница 10007 — используется на компьютерах Macintosh, по своему набору знаков почти совпадает с CP1251.


 
стр. 1
стр. 2 >>

<<События
Все материалы номера
В отключке >>