Загадочное семейство 04.11.2003 Владимир Лидовский
Работая с Интернетом и электронной почтой, многие из вас наверняка не раз сталкивались с проблемой выбора кодировки для букв русского алфавита. Но что стоит за всеми этими малопонятными названиями типа 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 — иврита.
|