Открыть сервис

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 (шестнадцатеричных). Кодовая таблица состоит из двух частей:

Ключевая особенность 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 →