ISO 646
ISO 646 — это международный стандарт, принятый Международной организацией по стандартизации (ISO), который определяет 7-битный набор символов для обмена информацией. Стандарт был разработан в 1972 году (первая редакция — ISO 646:1972) и впоследствии пересматривался (ISO 646:1973, ISO 646:1983, ISO 646:1991). ISO 646 лёг в основу многих национальных и отраслевых кодировок, включая ASCII (American Standard Code for Information Interchange), и стал фундаментом для последующих стандартов, таких как ISO/IEC 8859 и Unicode.
История
В 1960-е годы с развитием вычислительной техники и телекоммуникаций возникла потребность в универсальном способе представления текстовой информации. Различные производители и организации использовали собственные кодировки, что затрудняло обмен данными. В 1963 году в США был принят стандарт ASCII (ANSI X3.4), который стал основой для международной работы. В 1972 году ISO опубликовала стандарт ISO 646, который по сути представлял собой международную адаптацию ASCII, но с возможностью национальных вариаций.
Первоначальная версия ISO 646 полностью совпадала с US-ASCII (кроме некоторых позиций, зарезервированных для национальных символов). Однако в процессе принятия выяснилось, что разные страны нуждаются в поддержке собственных алфавитов (например, латинские буквы с диакритическими знаками, кириллица, греческий). Для этого в стандарте были предусмотрены «национальные варианты» — таблицы, в которых часть символов (в основном, на позициях 0x40–0x5F и 0x60–0x7F) заменялась на буквы, специфичные для конкретного языка.
Структура и кодировка
ISO 646 определяет 7-битный код, в котором каждому символу соответствует число от 0 до 127 (десятичных) или от 0x00 до 0x7F (шестнадцатеричных). Кодовая таблица состоит из двух частей:
- Управляющие символы (0x00–0x1F и 0x7F): 33 символа, которые не отображаются на экране, а используются для управления устройствами (например, перевод строки LF, возврат каретки CR, табуляция HT, сигнал звонка BEL).
- Графические символы (0x20–0x7E): 95 символов, включающих пробел, цифры, заглавные и строчные латинские буквы, знаки препинания и математические символы.
Ключевая особенность ISO 646 — возможность замены 10–12 графических символов на национальные. В международном справочном варианте (ISO 646-IRV) эти позиции заняты символами, общими для большинства языков на латинской основе (например, знаки $, @, [, \, ], ^, ` `, {, |, }, ~). В национальных вариантах некоторые из этих символов заменялись на буквы с диакритикой (например, ä, ö, ü, ñ, é`).
Примеры национальных вариантов
- US-ASCII (ANSI X3.4): базовый вариант, используемый в США. Совпадает с ISO 646-IRV.
- ISO 646-DE (Германия): на позициях
@,[,\,],^, ``,{,|,},~расположены буквы§,Ä,Ö,Ü,^,´,ä,ö,ü,ß`. - ISO 646-FR (Франция): замены:
@→à,[→°,\→ç,]→§,^→^(не меняется), ``→µ,{→é,|→ù,}→è,~→¨`. - ISO 646-GB (Великобритания): отличается от US-ASCII только заменой символа
#(0x23) на£(знак фунта стерлингов). - ISO 646-JP (Япония): в ранних версиях использовался для записи латиницы и цифр, но для японского языка применяется отдельная кодировка (JIS X 0201).
Проблема совместимости
Из-за национальных вариаций один и тот же код (например, 0x5B) мог означать разные символы в разных странах: в США — [, в Германии — Ä, во Франции — °. Это приводило к искажениям при передаче данных между системами с разными национальными настройками. Для решения проблемы были разработаны методы идентификации варианта (например, использование escape-последовательностей в стандарте ISO 2022), а позже — переход на 8-битные кодировки (ISO 8859), которые позволяли включать больше символов без конфликтов.
Влияние и наследие
ISO 646 стал отправной точкой для развития стандартизированных кодировок. Его 7-битная структура и принцип национальных вариантов легли в основу:
- ASCII: фактически идентичен ISO 646-IRV, но официально принят как национальный стандарт США.
- ISO 2022: расширение для работы с несколькими наборами символов в одном документе (использует escape-последовательности для переключения между кодировками).
- ISO 8859 (ISO/IEC 8859): семейство 8-битных кодировок, которые включают 256 символов (0x00–0xFF). Первые 128 символов (0x00–0x7F) совпадают с ISO 646-IRV, а дополнительные 128 (0x80–0xFF) содержат национальные символы. Например, ISO 8859-1 (Latin-1) поддерживает западноевропейские языки, ISO 8859-5 — кириллицу.
- Unicode (ISO/IEC 10646): современный стандарт, охватывающий все письменности мира. Первые 128 кодовых позиций Unicode (U+0000–U+007F) полностью соответствуют ASCII/ISO 646.
В России и странах бывшего СССР для кириллицы использовались варианты, основанные на ISO 646, но с заменой латинских букв на кириллические. Например, кодировка КОИ-7 (Код Обмена Информацией, 7-битная) была разработана для передачи русскоязычных текстов по телеграфным каналам. Позже она была вытеснена 8-битными кодировками (КОИ-8, CP1251) и Unicode.
Критика и ограничения
Основным недостатком ISO 646 была невозможность одновременного использования нескольких национальных алфавитов в одном документе. Из-за замены символов (например, квадратные скобки [ и ] в немецком варианте становились буквами Ä и Ö) нарушалась работа программного обеспечения, которое полагалось на эти символы (например, синтаксис языков программирования). Это привело к тому, что в 1980-х годах многие страны перешли на 8-битные расширения, а позже — на Unicode.
Кроме того, 7-битный лимит (128 символов) не позволял охватить даже все символы латинского алфавита с диакритикой, не говоря уже о нелатинских письменностях (кириллица, греческий, арабский). Поэтому ISO 646 никогда не использовался для полноценной поддержки русского языка — для этого требовались отдельные 7-битные кодировки (например, КОИ-7) или 8-битные расширения.
Применение в современности
В настоящее время ISO 646 в чистом виде практически не используется. Однако его наследие сохраняется:
- Все современные текстовые форматы и протоколы (HTML, JSON, электронная почта) базируются на ASCII/ISO 646 как на подмножестве.
- В системах, где требуется минимальный объём данных (например, в телеметрии, промышленных контроллерах, некоторых протоколах связи), до сих пор применяются 7-битные кодировки, совместимые с ISO 646.
- Стандарт ISO 646 упоминается в исторических и образовательных материалах как ключевой этап эволюции кодировок.
Интересные факты
- В стандарте ISO 646 не было символа «знак ударения» (´) — он появился только в 8-битных расширениях. Вместо него использовался символ «апостроф» (') на позиции 0x27.
- В некоторых национальных вариантах ISO 646 символ
#(0x23) заменялся на£(Великобритания) или¥(Япония), что создавало путаницу в программировании, где#используется для комментариев. - Стандарт ISO 646 был официально отозван в 2004 году, так как его функции полностью перекрываются более новыми стандартами (ISO/IEC 8859 и Unicode).
Источники
- ISO 646:1991 (International Standard) — Information technology — ISO 7-bit coded character set for information interchange.
- ISO/IEC 646:1991 (пересмотренный вариант).
- Стандарт ANSI X3.4-1968 (ASCII).
- ECMA-6 — 7-bit Coded Character Set (основан на ISO 646).
- Книга «Unicode: A Primer» (Tony Graham, 2000).
- Материалы по истории кодировок (M. E. Lesk, «The Evolution of Character Codes», 1974).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →