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

ISO 646-IRV

ISO 646-IRV — это международный стандарт, определяющий базовый набор символов для обмена информацией, который лёг в основу множества национальных и отраслевых кодировок, включая ASCII. Официальное название стандарта — «7-битный кодированный набор символов для обмена информацией» (7-bit coded character set for information interchange). IRV (International Reference Version) — международная эталонная версия этого набора, которая служит отправной точкой для создания национальных вариантов.

История и происхождение

Разработка стандарта ISO 646 началась в конце 1960-х годов в рамках Международной организации по стандартизации (ISO). Целью было создание универсального 7-битного кода, который позволил бы различным компьютерным системам и телекоммуникационным устройствам обмениваться текстовой информацией без потерь. До этого существовало множество несовместимых кодировок, что затрудняло взаимодействие.

Первая версия стандарта была опубликована в 1972 году. В основе ISO 646 лежал американский стандарт ASCII (American Standard Code for Information Interchange), разработанный Американским национальным институтом стандартов (ANSI) в 1963 году. ASCII, в свою очередь, базировался на кодах телеграфа и телетайпа.

ISO 646-IRV (International Reference Version) был задуман как эталонный набор символов, который все страны могли бы использовать как основу для своих национальных кодировок. В IRV были включены все символы, необходимые для английского языка, а также некоторые управляющие символы. Однако, поскольку 7-битное кодирование позволяет закодировать только 128 символов (2^7 = 128), в стандарте не было места для букв с диакритическими знаками, используемых в других языках (например, немецком, французском, испанском).

Структура и кодировка

ISO 646-IRV использует 7-битное кодирование. Каждый символ представлен одним байтом, в котором старший (8-й) бит всегда равен нулю. Это позволяет закодировать 128 символов, которые делятся на две основные группы:

Управляющие символы (0–31 и 127)

Первые 32 кода (0–31) и код 127 (DEL) отведены под управляющие символы. Они не отображаются на экране или бумаге, а управляют работой устройства: перевод строки (LF), возврат каретки (CR), табуляция (HT), звонок (BEL) и другие. Эти символы были унаследованы из телеграфных систем и стандарта ASCII.

Графические символы (32–126)

Коды с 32 по 126 отведены под отображаемые символы. Код 32 — пробел (SP). Коды 33–126 включают:

  • Цифры (0–9): коды 48–57.
  • Прописные латинские буквы (A–Z): коды 65–90.
  • Строчные латинские буквы (a–z): коды 97–122.
  • Знаки препинания и специальные символы: !, «, #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, }, ~.

Национальные варианты и проблема символов

Основная особенность ISO 646 заключается в том, что он не является фиксированным набором символов, а представляет собой «рамочный» стандарт. Он определяет, какие символы должны быть обязательно (например, латинские буквы, цифры), а какие могут быть заменены на национальные символы (буквы с диакритикой, национальные валюты и т.д.).

Для этого в стандарте были выделены 10 «свободных» позиций (коды 35, 36, 64, 91, 92, 93, 94, 96, 123, 124, 125, 126 — точное количество варьируется в зависимости от версии). В IRV эти позиции заняты символами, которые редко встречаются в других языках (например, #, $, @, [, \, ], ^, _, `, {, |, }, ~). Национальные стандарты могли заменять эти символы на свои.

Например:

  • Великобритания (BS 4730): Символ # (решетка) заменён на £ (фунт стерлингов).
  • Германия (DIN 66003): Символы [ и ] заменены на Ä и Ö, а { и } на ä и ö.
  • Франция (NF Z 62-010): Символы @ и [ заменены на à и °, а { на é.
  • Швеция/Финляндия (SEN 850200): Символы @ и [ заменены на É и Ä, а { на ä.
  • Япония (JIS X 0201): Символ \ заменён на ¥ (иена), а ~ на ‾ (верхнее подчёркивание).

Эта гибкость позволяла использовать стандарт в разных странах, но создавала серьёзные проблемы с совместимостью. Текст, закодированный в немецком варианте, мог быть неправильно прочитан во французской системе, и наоборот. Для решения этой проблемы вводились специальные escape-последовательности (например, по стандарту ISO 2022), которые позволяли переключаться между разными наборами символов.

Отличие от ASCII

Хотя ISO 646-IRV и ASCII очень похожи, они не идентичны. Основное отличие заключается в том, что ASCII является строго фиксированным стандартом, а ISO 646 — рамочным. В ASCII нет «свободных» позиций для замены символов. Однако на практике, когда говорят об «ASCII», часто подразумевают именно ISO 646-IRV, поскольку в большинстве реализаций (особенно в англоязычном мире) они совпадают.

В более поздних версиях ISO 646 (например, ISO 646:1991) IRV был сделан обязательным для всех национальных вариантов, что фактически привело к тому, что ASCII стал международным эталоном, а национальные варианты — лишь его модификациями.

Значение и наследие

ISO 646-IRV сыграл ключевую роль в стандартизации обмена текстовой информацией. Он стал основой для:

  • ASCII: Американский стандарт, который фактически стал синонимом ISO 646-IRV.
  • UNICODE: Юникод, разработанный в 1990-х годах, решил проблему несовместимости национальных кодировок, используя 16-битное (а позже и 32-битное) кодирование, которое может вместить все символы всех языков мира. Однако первые 128 символов Юникода (U+0000–U+007F) полностью совпадают с ISO 646-IRV.
  • Множество национальных кодировок: КОИ-8 (русская), JIS X 0201 (японская), ISO 8859-1 (Latin-1) и другие — все они в той или иной степени являются расширениями или модификациями ISO 646.

Хотя 7-битные кодировки сегодня практически не используются в чистом виде (за исключением некоторых специализированных систем), их наследие живёт в Юникоде и в структуре современных компьютерных систем. ISO 646-IRV стал первым шагом к глобальной стандартизации текстового обмена.

Интересные факты

  • Символ «@» (коммерческое at) в ISO 646-IRV имеет код 64. Его происхождение связано с бухгалтерскими и торговыми документами, где он обозначал «по цене» (например, «10 единиц @ 5 долларов»).
  • Символ «#» (решетка, октоторп) в ISO 646-IRV имеет код 35. В англоязычном мире он часто используется как знак номера (№).
  • Символ «~» (тильда) в ISO 646-IRV имеет код 126. В некоторых национальных вариантах (например, в японском) он заменялся на символ «‾» (верхнее подчёркивание), что приводило к путанице.
  • Стандарт ISO 646 был одним из первых, кто ввёл понятие «escape-последовательности» (ESC) для переключения между наборами символов, что позже было развито в стандарте ISO 2022.

Источники

  1. ISO 646:1991, Information technology — ISO 7-bit coded character set for information interchange.
  2. Mackenzie, C. E. (1980). Coded Character Sets: History and Development. Addison-Wesley.
  3. Уильямс, С. (1997). История вычислительной техники. Издательство «Мир».
  4. Стандарт ASCII (ANSI X3.4-1968).
  5. Документация по стандарту ISO 2022 (Information technology — Character code structure and extension techniques).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →