ISO, менеджмент, консалтингпользователи сайтаRSSФОРУМСТАНДАРТЫГОСТ РСЛОВАРЬНАВИГАТОРКОНСУЛЬТАНТЫ 
Логин : Пароль:   
       [регистрация] [напомнить пароль]
 

ФОРУМ
• Re: методики описания БП 
 23. Окт 08:43 от PrilipkoAI
• ISO 22000:2018 
 10. Сент 23:29 от GurbanovR
• HACCP vs FSMS 
 23. Авг 10:52 от PrilipkoAI
• Re: план контроля качества 
 13. Авг 12:07 от Facebook



кодировка: Загадочное семейство

Автор Владимир Лидовский
см. тематический раздел: обзоры и интервью / Интернет и маркетинг



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

Сводный брат

Ясно, что для кодирования символов некоторых языков, например китайского, 8-разрядных чисел недостаточно. Кроме того, создание 8-разрядных таблиц кодировки в какой-то момент стало практически неконтролируемым: каждый новый компьютерный шрифт вводил и собственную таблицу. Именно поэтому был создан консорциум Unicode: его целью стала разработка единой системы кодирования всех возможных символов, что позволило присваивать коды знакам компьютерных шрифтов по определенной схеме, а не как бог на душу положит.

Кодировка Unicode опирается на каталог символов UCS (Universal Character Set) стандарта ISO 10646. UCS может содержать до 231=2147483648 различных знаков и постоянно пополняется. Коды UCS-2 — двухбайтные, то есть числа от 0 до 65535, а UCS-4 — четырехбайтные, то есть числа от 0 до 2147483647. ASCII — это первые коды UCS-2, а UCS-2 — это начало UCS-4. Двух- и четырехбайтные коды Unicode могут представляться двумя способами: байты располагаются слева направо от старшего к младшему (Big Endian, BE) или от младшего к старшему (Little Endian, LE). Второй способ встречается в подавляющем большинстве случаев. Кроме того, для более компактного кодирования используются коды переменной длины UTF-8 (Unicode Transfer Format) — 1–6-байтные и UTF-16 — двух- или четырехбайтные. Последние также существуют в двух видах (Little и Big Endian) и позволяют кодировать не более 220+216=1114112 знаков. Все коды UCS-2 являются и кодами UTF-16. Есть еще формат UTF-7, который позволяет для большинства символов ASCII использовать 7-битные числа, — он обеспечивает доступ только к UCS-2. Коды Unicode 20 (пробел), A0 (неразрывный пробел) и AD (перенос), присутствующие во многих 8-разрядных таблицах, можно рассматривать как управляющие.

Часть кодов в UCS зарезервирована для личного или ограниченного локальными рамками использования. Остальные коды тоже сгруппированы по назначению.

Все большее распространение получает кодировка UTF-8, которая позволяет обходиться 8 битами для кодирования символов ASCII и 16 битами для кодирования символов большинства алфавитных письменностей, в том числе русской. Тексты в ASCII, в частности на английском языке, являются одновременно и текстами в UTF-8. Код UTF-8, последовательность байтов, получается из кода каталога UCS по однозначной схеме, которая приведена в таблице наверху.

Позиции битов, обозначенные как буква x, заполняются соответствующими битами из кода символа в бинарном представлении. Используется кратчайшая из возможных многобайтовых последовательностей, которые могут представить код символа. Например, символ Unicode с кодом 169 = a916 = 1010 1001 (знак ©) кодируется в UTF-8 как 11000010 10101001 = c216 a916, а символ с кодом 8800 = 226016 = 0010 0010 0110 0000 (знак №) кодируется так: 11100010 10001001 10100000 = e216 8916 a016.

Unicode достаточно полно поддерживается современными программами — браузерами, офисными пакетами и пр. В Linux используется UTF-8, а в Microsoft Windows — еще и UCS-2. Пока поддержка UCS в Linux несколько слабее, чем в Windows 2000/Me/ XP. Главные проблемы при использовании Unicode — отсутствие соответствующего полного набора шрифтов и сложность ввода. Как, скажем, российскому пользователю вводить специфические испанские буквы, математические знаки, китайские иероглифы? Для этого приходится использовать те или иные программы — к примеру, может помочь текстовый редактор Yudit (www.yudit.org).


Дела семейные

Единственный возможный способ работы с кириллицей в системе без соответствующих шрифтов — это транслитерация. Для русского языка существует несколько систем транслитерации, разрабатываемых с начала XX века, — но ни одна из них не стала признанным стандартом. Загвоздка в том, что для представления 33 букв русского алфавита есть только 26 базовых букв латинского. Решение этой проблемы — в привлечении диакритических знаков (например, э можно обозначать как e?) или в использовании буквенных последовательностей (shch для обозначения щ). Первый способ не вписывается в базовый латинский алфавит, а второй может приводить к разночтениям: если, скажем, ч обозначать как ch, а ш — sh, то как транслитерировать в латиницу слово веснушчатый? Неоднозначности можно было бы избежать, заключая буквенные последовательности между знаками (например, угловыми скобками).

Широко используется транслитерация на основе ASCII (КОИ-7) — код получается вычитанием 128 от соответствующего кода в koi8-r, что, как правило, дает код латинской буквы, фонетически близкой к русской. Недостатком этой «естественной» транслитерации является представление одиннадцати букв русского алфавита (ЧчШшЩщъЭэЮю) в виде специальных знаков и отсутствие представления для букв ЁёЪ. Однако и в этом случае можно использовать для упомянутых букв заключенные между скобками (квадратными, круглыми, угловыми…) стандартные транслитерационные последовательности.

Стандарт ГОСТ 7.79 от 2000 года также вводит почти взаимно однозначную транслитерацию без использования диакритических знаков, и в нем нет возможности различать заглавные и строчные мягкий и твердый знаки.

Бедные родственники

Для кодирования кириллицы могут использоваться еще пять таблиц, не имеющих международного статуса:
- Основная кодировка ГОСТ (государственный стандарт СССР) от 1987 года. Совпадает с ISO 8859-5 по знакам русских букв, кроме заглавной буквы Ё, расположенной как в CP866. Ее главный недостаток — символы псевдографики расположены не так, как на IBM PC. На практике эту кодировку можно встретить только на старых советских клонах IBM PC ЕС-1840 и в знакогенераторах принтеров, выпущенных до середины 90-х.
- Альтернативная кодировка ГОСТ отличается от CP866 по позициям 242–251, содержащим символы ^ ґ ` ® Ї ­ ё ± (первые четыре из них до сих пор не включены в Unicode).
Модифицированная альтернативная кодировка ГОСТ отличается от CP866 по позициям 242–247 и 252, 253, содержащим символы і Ј у х ё » n 2.
- Болгарская кодировка, называемая также «старый вариант ВЦ АН СССР», Interprog или MIC, получается механическим внесением блока из 64 букв русского алфавита (такого же, как в CP1251) в позиции 128–191 CP437. Позволяет работать с текстами на украинском и белорусском.
- КОИ-8 — с середины 1970-х ее варианты использовались на компьютерах под управлением ОС Unix, CP/M и некоторых других. На IBM PC не получила распространения из-за неалфавитного расположения букв кириллицы. Вместо нее в среде MS-DOS в основном использовали сначала болгарскую, потом основную и, наконец, варианты альтернативной (базовую, затем модифицированную и затем CP866). В ней нет букв ЁёЪ, а остальные буквы совпадают с koi8-r.


Литература
[1] Галенко В. Т. Русский язык и латиница //НТИ. Серия 1, 10/2000.
[2] ГОСТ 7.79-2000. Система стандартов по информации, библиотечному, издательскому делу. Правила транслитерации кирилловского письма латинским алфавитом — М.: Издательство стандартов, 2002.
[3] Малютин Э. А. Кодовые таблицы персональных компьютеров — М.: МП «Память», 1991.
[4] Соснин О. М. О русско-латинской транслитерации личных имен, фамилий и географических названий в официальных документах //НТИ. Серия 1, 2/2003.
[5] Gilyarevsky R. S., Grivnin V. S. Language identification guide — M.: «Nauka» Publishing House, 1970.
[6] ISO9: Information and documentation — Transliteration of Cyrillic characters by Latin characters — Slavic and non-Slavic Languages — Geneve, 1995.

[7] Материалы сайта www.unicode.org.





Добавлено:  21 Ноября 2003 г.
хиты: 15687   

оценка читателей: 304 из 650 считают этот обзор полезным
А вы считаете его полезным?
да  нет
[ оглавление ]


менеджмент качества ( процессы | школа качества | нормирование | управление качеством | хассп)
книги: стандарты | качество | ХАССП | маркетинг | торговля
управленческий консалтинг ( планирование и контроль | конфликтменеджмент)
новости и события: пресс-релизы | новые стандарты | новости партнеров | новости | архив новостей, статей
новая торговля (автоматизация | магазиностроение | маркетинг и экономика)
интернет-маркетинг (создание сайта | интернет - бизнес)
финансы & страхование (страхование | бизнес-школа)
обзоры и интервью: маркетинг | консалтинг | торговля | управление качеством )
энциклопедия: это интересно | глоссарий | о семье | менеджмент семьи | каталог ресурсов