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

ISO 2022

ISO 2022 — это международный стандарт, определяющий структуру и методы кодирования символов для обмена информацией между системами обработки данных, использующими различные наборы знаков. Стандарт, официально известный как ISO/IEC 2022, устанавливает механизмы расширения и переключения между кодовыми таблицами, что позволяет представлять тексты на множестве языков, включая языки с нелатинскими алфавитами (кириллица, арабский, иврит) и идеографические системы письма (китайский, японский, корейский), в рамках одного потока данных.

История

Разработка ISO 2022 началась в конце 1960-х годов в рамках работы Международной организации по стандартизации (ISO) над унификацией обмена текстовой информацией. Первая версия стандарта была опубликована в 1973 году. Основной предпосылкой для его создания стала необходимость преодолеть ограничения 7-битного кода ASCII (American Standard Code for Information Interchange), который содержал лишь 95 печатных символов, достаточных для английского языка, но совершенно непригодных для других языков.

В 1980-х годах стандарт был пересмотрен и расширен для поддержки 8-битных кодировок, что позволило увеличить количество доступных знаков. Наибольшее распространение ISO 2022 получил в Японии, где на его основе были разработаны национальные стандарты кодирования, такие как JIS X 0201, JIS X 0208 и JIS X 0212. Эти стандарты легли в основу популярных в 1980-1990-х годах японских кодировок, включая ISO-2022-JP, используемую в электронной почте.

С развитием Unicode и повсеместным переходом на 16- и 32-битные кодировки (UTF-8, UTF-16) значение ISO 2022 снизилось. Однако он остаётся важным историческим стандартом, а также продолжает использоваться в некоторых специализированных областях, таких как обработка японского текста в старых системах и протоколах электронной почты.

Основные принципы

ISO 2022 основан на концепции кодовых таблиц (code tables) и наборов символов (character sets). Он не определяет конкретную кодировку, а задаёт правила, по которым можно переключаться между различными наборами символов в процессе передачи данных.

Кодовые таблицы

Стандарт оперирует 7-битными и 8-битными кодовыми таблицами. В 7-битной таблице (0-127) первые 32 позиции (0-31) зарезервированы под управляющие символы (C0), а остальные 96 (32-127) — под графические символы (G0). В 8-битной таблице (0-255) добавляется вторая половина (128-255), которая также делится на управляющие символы (C1, 128-159) и графические символы (G1, 160-255).

Механизмы переключения

Ключевая особенность ISO 2022 — возможность динамически изменять, какие наборы символов отображаются на определённые области кодовой таблицы. Для этого используются escape-последовательности (ESC-последовательности). Они начинаются с управляющего символа ESC (код 27 в десятичной системе) и заканчиваются одним или несколькими байтами, идентифицирующими целевой набор символов.

Например, последовательность ESC $ B переключает текущий набор символов на японский стандарт JIS X 0208-1983 (двухбайтовые иероглифы). В стандарте определены следующие основные типы переключений:

  • SI (Shift In) — переключение на набор G0 (обычно ASCII).
  • SO (Shift Out) — переключение на набор G1 (обычно национальный или расширенный набор).
  • ESC (n) F — переключение на набор G0 с указанием регистра.
  • ESC (n) G — переключение на набор G1 с указанием регистра.

Многоуровневость

ISO 2022 поддерживает до четырёх графических наборов (G0, G1, G2, G3) и до двух управляющих наборов (C0, C1). Переключение между ними осуществляется с помощью специальных управляющих последовательностей, что позволяет гибко комбинировать различные алфавиты в одном документе.

Классификация кодировок на основе ISO 2022

На основе ISO 2022 было разработано множество национальных и отраслевых кодировок. Наиболее известные из них:

  • ISO-2022-JP — кодировка для японского языка, использующая ASCII, JIS X 0201 (катакана) и JIS X 0208 (кандзи). Широко применялась в электронной почте (MIME).
  • ISO-2022-KR — кодировка для корейского языка, основанная на стандарте KS X 1001 (корейские иероглифы хангыль).
  • ISO-2022-CN — кодировка для китайского языка (упрощённое письмо), использующая GB 2312.
  • ISO-2022-TW — кодировка для китайского языка (традиционное письмо), основанная на CNS 11643.
  • ISO-2022-INT — кодировка для международного обмена, поддерживающая латиницу, кириллицу, греческий и другие алфавиты.

Применение

Электронная почта и MIME

В 1990-х годах ISO 2022 стал основным механизмом для представления не-ASCII текста в протоколах электронной почты, таких как SMTP. Стандарт MIME (Multipurpose Internet Mail Extensions) определил кодировку 7bit и 8bit, а также специальные схемы, такие как Base64 и Quoted-Printable, но для японского, корейского и китайского языков часто использовались 7-битные кодировки ISO-2022-JP, ISO-2022-KR и ISO-2022-CN, которые не требовали перекодировки в 8-битную форму.

Терминалы и эмуляторы

ISO 2022 широко использовался в протоколах управления терминалами, таких как VT100 и его последователи. Escape-последовательности, определённые в стандарте, позволяли переключать наборы символов на терминалах, поддерживающих несколько языков.

Национальные стандарты

Многие страны приняли ISO 2022 как основу для своих национальных стандартов кодирования. Например, в России на его основе был разработан ГОСТ 27463-87 (КОИ-8), хотя позже он был вытеснен Windows-1251 и UTF-8.

Критика и ограничения

Несмотря на свою гибкость, ISO 2022 имеет ряд недостатков:

  • Сложность реализации. Необходимость отслеживать состояние переключений между наборами символов делает обработку текста более трудоёмкой по сравнению с простыми кодировками.
  • Неэффективность. Для представления текста на нескольких языках требуется вставлять множество escape-последовательностей, что увеличивает объём данных.
  • Ограниченная поддержка Unicode. ISO 2022 не рассчитан на работу с многобайтовыми кодировками, такими как UTF-8, и не может напрямую представлять все символы Unicode.
  • Проблемы с безопасностью. В некоторых реализациях неправильная обработка escape-последовательностей могла приводить к уязвимостям, например, к инъекциям управляющих символов.

С появлением Unicode и его доминирующей реализации UTF-8, ISO 2022 утратил практическое значение для большинства современных приложений. Однако он остаётся важным историческим этапом в развитии компьютерной лингвистики и стандартизации кодировок.

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

  • Стандарт ISO 2022 стал основой для создания многих национальных кодировок, включая китайский GB 2312, японский JIS X 0208 и корейский KS X 1001.
  • В 1990-х годах ISO 2022 был включён в стандарт MIME как обязательный механизм для передачи текста на японском, корейском и китайском языках.
  • Некоторые старые системы, такие как IBM 3270 и DEC VT220, использовали ISO 2022 для поддержки многоязычного ввода и вывода.
  • В 2000-х годах IETF (Internet Engineering Task Force) рекомендовала прекратить использование ISO-2022-JP в новых протоколах в пользу UTF-8.

Источники

  • ISO/IEC 2022:1994 — Information technology — Character code structure and extension techniques.
  • Lunde, Ken. CJKV Information Processing. 2nd ed., O'Reilly Media, 2009.
  • RFC 1468 — Japanese Character Encoding for Internet Messages (ISO-2022-JP).
  • RFC 1557 — Korean Character Encoding for Internet Messages (ISO-2022-KR).
  • RFC 1922 — Chinese Character Encoding for Internet Messages (ISO-2022-CN).
  • ГОСТ 27463-87 — Системы обработки информации. Кодирование символов. 8-битные коды.

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

На главную BFOmetr →