stringtranslate.com

Коды управления C0 и C1

Управляющие коды C0 и C1 или наборы управляющих символов определяют управляющие коды для использования в тексте компьютерными системами, использующими ASCII и производные от ASCII. Коды представляют дополнительную информацию о тексте, такую ​​как положение курсора, инструкция начать новую строку или сообщение о том, что текст был получен.

Коды C0 находятся в диапазоне 00 HEX –1F HEX , а набор C0 по умолчанию изначально был определен в ISO 646 ( ASCII ). Коды C1 находятся в диапазоне 80 HEX –9F HEX , а набор C1 по умолчанию изначально был определен в ECMA-48 (позднее согласованном с ISO 6429). Система указания управляющих и графических символов ISO/IEC 2022 допускает использование других наборов C0 и C1 для специализированных приложений, но они используются редко.

C0-контроль

ASCII определяет 32 управляющих символа, а также необходимый дополнительный символ для символа DEL, 7F HEX или 01111111 BIN (необходимый для того, чтобы пробить все отверстия на бумажной ленте и стереть ее).

Такое большое количество кодов было желательно в то время, поскольку многобайтовые элементы управления потребовали бы реализации конечного автомата в терминале, что было очень сложно с использованием современной электроники и механических терминалов.

Только несколько кодов сохранили свое использование: BEL, ESC и символы "Format effector" (FE n ) BS, TAB, LF, VT, FF и CR. Другие не используются или приобрели другие значения, например, NUL является терминатором строки C. Некоторые протоколы передачи данных, такие как ANPA-1312 , Kermit и XMODEM, действительно широко используют SOH, STX, ETX, EOT, ACK, NAK и SYN для целей, приближающих их первоначальные определения; а некоторые форматы файлов используют "Information Separators" (IS n ), такие как формат Unix info [1] и метод строк splitlines в Python . [2]

Названия некоторых кодов были изменены в ISO 6429:1992 (или ECMA-48:1991) для обеспечения нейтральности по отношению к направлению написания. Используемые сокращения не были изменены, поскольку стандарт уже указал, что они останутся неизменными при переводе стандарта на другие языки. В этой таблице показаны как новые, так и старые названия для переименованных элементов управления (старое название соответствует сокращению).

Unicode предоставляет Control Pictures , которые могут заменить управляющие символы C0, чтобы сделать их видимыми на экране. Однако чаще используется нотация с кареткой .

  1. ^ Телетайп обозначил ключ WRU для фразы «кто ты?» [6]
  2. ^ Имя BELL присвоено Unicode несвязанному символу эмодзи 🔔 (U+1F514). Хотя управляющие символы C0 и C1 в то время формально не были названы самим стандартом Unicode, это противоречило существующему использованию BELL в качестве имени этого управляющего символа в программном обеспечении после предыдущих версий UTS#18 (стандарт регулярных выражений Unicode), [7] например, в Perl . [8] Теперь Unicode принимает ALERT и BEL (но не BELL) в качестве формальных псевдонимов для управляющего символа, [9] хотя в кодовой таблице BELL по-прежнему указан как псевдоним ISO 6429, [10] а соответствующая кодовая точка управляющей картинки называется SYMBOL FOR BELL. Впоследствии Perl перешел на использование BELL для эмодзи в версии 5.18. [11]
  3. ^ ab ISO/IEC 2022 (ECMA-35) называет их LS0 и LS1 в 8-битных средах и SI и SO в 7-битных средах. [12]
  4. ^ Первое издание ASCII 1963 года классифицировало DLE как управление устройством, а не как управление передачей, и дало ему аббревиатуру DC0 («управление устройством, зарезервированное для выхода из канала передачи данных»). [13]
  5. ^ Последовательность экранирования ' \e ' не является частью спецификаций ISO C и многих других языков. Однако она понимается несколькими компиляторами, включая GCC .

С1 элементы управления

В 1973 году ECMA-35 и ISO 2022 [17] попытались определить метод, чтобы 8-битный «расширенный ASCII» код мог быть преобразован в соответствующий 7-битный код, и наоборот . [18] В 7-битной среде Shift Out ( SO ) изменил бы значение 96 байтов 0x20 через 0x7F [a] [20] (т. е. всех, кроме управляющих кодов C0), чтобы они стали символами, которые 8-битная среда напечатала бы, если бы использовала тот же код с установленным старшим битом. Это означало, что диапазон от 0x80 до 0x9F не мог быть напечатан в 7-битной среде, [18] поэтому было решено, что никакой альтернативный набор символов не может их использовать, и что эти коды должны быть дополнительными управляющими кодами, которые стали известны как управляющие коды C1 . Чтобы разрешить 7-битной среде использовать эти новые элементы управления, последовательности до должны были считаться эквивалентными. [18] Более поздние стандарты ISO 8859 отказались от поддержки 7-битных кодов, но сохранили этот диапазон управляющих символов.ESC @ESC _

Первым набором контрольных кодов C1, зарегистрированным для использования с ISO 2022, был DIN 31626 [21], специализированный набор для библиографического использования, зарегистрированный в 1979 году. [22]

Более распространенный набор ISO/IEC 6429 общего назначения был зарегистрирован в 1983 году, [23] хотя спецификация ECMA-48, на которой он был основан, была впервые опубликована в 1976 году [24] и JIS X 0211 (ранее JIS C 6323). [25] Также используются символические имена, определенные RFC  1345 и ранними проектами ISO 10646, но не в ISO/IEC 6429 ( PAD , HOP и SGC ). [8] [26]

За исключением SS2 и SS3 в тексте EUC-JP и NEL в тексте, транскодированном из EBCDIC , 8-битные формы этих кодов почти никогда не использовались. CSI , DCS и OSC используются для управления текстовыми терминалами и эмуляторами терминалов , но почти всегда с использованием их 7-битных представлений escape-кодов. В настоящее время, если эти коды встречаются, то гораздо более вероятно, что они предназначены для печати символов из этой позиции Windows-1252 или Mac OS Roman .

За исключением NEL, Unicode не предоставляет "контрольную картинку" ни для одного из них. Также для них нет общеизвестной вариации нотации Caret.

  1. ^ В ранних версиях диапазон не включал SP и DEL [19]
  2. ^ abc Не является частью ISO/IEC 6429 (ECMA-48) [8] [26] [28] : 4  [29] : 5  [30] : 8 
  3. ^ abcd Не является частью первого издания ISO/IEC 6429. [23] [28] : 4 
  4. ^ Устаревший в 1988 году и отозван в 1992 году из ISO/IEC 6429 [30] : 87  (1986 [32] и 1991 [33] соответственно для ECMA-48).

Другие наборы кодов управления

Механизм расширения ISO /IEC 2022 (ECMA-35) позволил escape-последовательностям изменять наборы C0 и C1. Стандартный набор управляющих символов C0, показанный выше, выбран с последовательностью ESC ! @, а указанный выше набор C1 выбран с последовательностью ESC " C. [23]

Было определено несколько официальных и неофициальных альтернатив, но эта в значительной степени устарела. Большинство из них были вынуждены сохранить значительную часть совместимости с элементами управления ASCII для обеспечения взаимодействия. Стандарт делает ESC, [39] [40] SP и DEL [a] «фиксированными» кодированными символами, которые доступны в своих позициях ASCII во всех кодировках, соответствующих стандарту. [42] Он также указывает, что если набор C0 включал коды управления передачей (TC n ), они должны быть закодированы в своих позициях ASCII [39] и не могут быть помещены в набор C1, [43] и любые новые элементы управления передачей должны быть в наборе C1. [39]

Другие наборы кодов управления C0

Замена наборов символов C1

Юникод

Unicode резервирует 65 кодовых точек, описанных выше, для совместимости с управляющими кодами C0 и C1, присваивая им общую категорию Cc (управляющие). Это:

Unicode определяет семантику только для элементов управления форматом C0 HT, LF, VT, FF и CR (обратите внимание, что BS отсутствует); разделителей информации C0 FS, GS, RS, US (и SP); и элемента управления C1 NEL. [54] Остальные коды прозрачны для Unicode, а их значения оставлены для протоколов более высокого уровня, при этом ISO/IEC 6429 предлагается в качестве значения по умолчанию. [54]

Unicode включает в себя множество дополнительных символов-эффекторов формата помимо этих, таких как метки, вставки, изоляты и выталкиватели для явного двунаправленного форматирования, а также объединятель и необъединитель нулевой ширины для управления использованием лигатуры. Однако им присваивается общая категория (формат), а не .CfCc

Смотрите также

Сноски

  1. ^ ISO/IEC 4873 распространяет это требование на C1 SS2 и SS3, [41] хотя сам ISO/IEC 2022 этого не делает.

Ссылки

  1. ^ Фокс, Брайан . "Добавление нового узла в Info". Info: Онлайновая система документирования GNU с управлением через меню . Проект GNU .
  2. ^ "Встроенные типы § str.splitlines". Стандартная библиотека Python . Python Software Foundation .
  3. ^ ab ISO/TC 97/SC 2 (1975). Набор управляющих символов ISO 646 (PDF) . ITSCJ/ IPSJ . ISO-IR -1.{{citation}}: CS1 maint: числовые имена: список авторов ( ссылка )
  4. ^ abc IPTC (1995). Рекомендуемый формат сообщения IPTC (PDF) (5-е изд.). ИПТК ТЭК 7901.
  5. ^ abc "символ конца передачи (EOT)". Федеральный стандарт 1037C . 1996. Архивировано из оригинала 2016-03-09.
  6. ^ Роберт Макконнелл; Джеймс Хейнс; Ричард Уоррен (декабрь 2002 г.). «Понимание кодов ASCII». NADCOMM .
  7. ^ Уильямсон, Карл. «Re: PRI #202: Расширения NameAliases.txt для Unicode 6.1.0».
  8. ^ abc Кен Уистлер (20 июля 2011 г.). "Формальные псевдонимы имен для управляющих символов, L2/11-281". Консорциум Unicode .
  9. ^ abcd "Псевдонимы имен". База данных символов Unicode . Консорциум Unicode .
  10. ^ "C0 Controls and Basic Latin" (PDF) . Консорциум Unicode.
  11. ^ "charnames". Документация по программированию на Perl .
  12. ^ abc ECMA (1994). "7.3: Вызов элементов кода набора символов". Структура и методы расширения кода символов (PDF) (Стандарт ECMA) (6-е изд.). стр. 14. ECMA-35.
  13. ^ Американская ассоциация стандартов (1963). Американский стандартный код для обмена информацией: 4. Условные обозначения. стр. 6. ASA X3.4-1963.
  14. ^ "символ перехода по каналу связи (DLE)". Федеральный стандарт 1037C . 1996. Архивировано из оригинала 2016-08-01.
  15. ^ «Дополнительные функции управления передачей (расширение основных процедур управления режимом для систем передачи данных)». Европейская ассоциация производителей компьютеров . 1972. ECMA-37.
  16. ^ "В чем смысл Ctrl-S?". Unix and Linux Stack exchange . Получено 14 февраля 2019 г.
  17. ^ ECMA/TC 1 (1973). "Краткая история". 7-битный набор кодированных символов ввода/вывода (PDF) (4-е изд.). ECMA . ECMA-6:1973.{{citation}}: CS1 maint: числовые имена: список авторов ( ссылка )
  18. ^ abc ECMA/TC 1 (1971). "8.2: Соответствие между 7-битным кодом и 8-битным кодом". Расширение 7-битного кодированного набора символов (PDF) (1-е изд.). ECMA . стр. 21–24. ECMA-35:1971.{{citation}}: CS1 maint: числовые имена: список авторов ( ссылка )
  19. ^ ECMA/TC 1 (1973). "4.2: Специальные управляющие символы". 7-битный набор кодированных символов ввода/вывода (PDF) (4-е изд.). ECMA . стр. 16. ECMA-6:1973.{{citation}}: CS1 maint: числовые имена: список авторов ( ссылка )
  20. ^ ECMA/TC 1 (1985). "5.3.8: Наборы из 96 графических символов". Code Extension Techniques (PDF) (4-е изд.). ECMA . стр. 17–18. ECMA-35:1985.{{citation}}: CS1 maint: числовые имена: список авторов ( ссылка )
  21. ^ abc ISO/IEC Международный регистр кодированных наборов символов для использования с управляющими последовательностями (PDF) , ITSCJ/ IPSJ , ISO-IR
  22. ^ ab DIN (1979-07-15). Дополнительные контрольные коды для библиографического использования в соответствии с немецким стандартом DIN 31626 (PDF) . ITSCJ/ IPSJ . ISO-IR -40.
  23. ^ abc ISO/TC97/SC2 (1983-10-01). Контрольный набор C1 ISO 6429:1983 (PDF) . ITSCJ/ IPSJ . ISO-IR -77.{{citation}}: CS1 maint: числовые имена: список авторов ( ссылка )
  24. ^ ECMA/TC 1 (1979). "Краткая история". Дополнительные функции управления для устройств ввода-вывода с отображением символов (PDF) (2-е изд.). ECMA . ECMA-48:1979.{{citation}}: CS1 maint: числовые имена: список авторов ( ссылка )
  25. ^ "JIS X 02xx 符号" (на японском языке).
  26. ^ ab Ken Whistler (2015-10-05). "Почему ничто никогда не уходит". Unicode Mailing List .
  27. ^ ECMA/TC 1 (июнь 1991 г.). Функции управления для кодированных наборов символов (PDF) (5-е изд.). ECMA . ECMA-48:1991.{{cite book}}: CS1 maint: числовые имена: список авторов ( ссылка )
  28. ^ ab ISO 6429:1983 Обработка информации — 7-битные и 8-битные кодированные наборы символов ISO — Дополнительные функции управления для устройств отображения символов. ISO . 1983-05-01.
  29. ^ ISO 6429:1988 Обработка информации — Функции управления для 7-битных и 8-битных кодированных наборов символов. ISO . 1988-11-15.
  30. ^ ab ISO/IEC 6429:1992 Информационные технологии. Функции управления для кодированных наборов символов. ISO . 15.12.1992 . Получено 29.05.2024 .
  31. ^ Лунде, Кен (2008). Обработка информации CJKV: китайская, японская, корейская и вьетнамская вычислительная техника. O'Reilly. стр. 244. ISBN 9780596800925.
  32. ^ ECMA/TC 1 (декабрь 1986 г.). "Приложение E: Изменения, внесенные в это издание". Функции управления для кодированных наборов символов (PDF) (4-е изд.). ECMA . ECMA-48:1986.{{cite book}}: CS1 maint: числовые имена: список авторов ( ссылка )
  33. ^ ECMA/TC 1 (июнь 1991 г.). "F.8 Исключенные функции управления". Функции управления для кодированных наборов символов (PDF) (5-е изд.). ECMA . ECMA-48:1991.{{cite book}}: CS1 maint: числовые имена: список авторов ( ссылка )
  34. ^ "Ресурсы виджета VT100 (§ hpLowerleftBugCompat)". xterm - эмулятор терминала для X.
  35. ^ Мой, Эдвард; Джилдеа, Стивен; Дики, Томас. «Функции управления устройствами». Последовательности управления XTerm .
  36. ^ ab Брендер, Рональд Ф. (1989). «Отчет о проекте Ada 9x: проблемы с набором символов для Ada 9x». Университет Карнеги-Меллона .
  37. ^ Мой, Эдвард; Джилдеа, Стивен; Дики, Томас. «Команды операционной системы». Последовательности управления XTerm .
  38. ^ Франк да Круз; Кристин Джианоне (1997). Использование C-Kermit. Digital Press. стр. 278. ISBN 978-1-55558-164-0.
  39. ^ abc ECMA (1994). "6.4.2: Первичные наборы кодированных функций управления". Структура кодов символов и методы расширения (PDF) (Стандарт ECMA) (6-е изд.). стр. 11. ECMA-35.
  40. ^ ISO/TC97/SC2/WG-7 ; ЭКМА (1 августа 1985 г.). Минимальный набор C0 для ISO 4873 (PDF) . ITSCJ/ IPSJ . ИСО-ИР -104.{{citation}}: CS1 maint: числовые имена: список авторов ( ссылка )
  41. ^ ISO/TC97/SC2/WG-7 ; ЭКМА (1 августа 1985 г.). Минимальный набор C1 для ISO 4873 (PDF) . ITSCJ/ IPSJ . ИСО-ИК -105.{{citation}}: CS1 maint: числовые имена: список авторов ( ссылка )
  42. ^ ECMA (1994). "6.2: Фиксированные кодированные символы". Структура кодов символов и методы расширения (PDF) (Стандарт ECMA) (6-е изд.). стр. 7. ECMA-35.
  43. ^ ECMA (1994). "6.4.3: Дополнительные наборы кодированных функций управления". Структура кодов символов и методы расширения (PDF) (Стандарт ECMA) (6-е изд.). стр. 11. ECMA-35.
  44. ^ ITU (1985). Основной набор функций управления Teletex (PDF) . ITSCJ/ IPSJ . ISO-IR -106.
  45. ^ Úřad pro Normalizaci a Měřeni (1987). Набор управляющих символов ISO 646, где EM заменен на SS2 (PDF) . ITSCJ/ IPSJ . ИСО-ИК -140.
  46. ^ ISO/TC 97/SC 2 (1977). Набор управляющих символов ISO 646, с заменой IS4 на Single Shift для G2 (SS2) (PDF) . ITSCJ/ IPSJ . ISO-IR -36.{{citation}}: CS1 maint: числовые имена: список авторов ( ссылка )
  47. ^ ab ISO/TC97/SC2/WG6 . "Заявление о связи с ISO/TC97/SC2/WG8 и ISO/TC97/SC18/WG8" (PDF) . ISO/TC97/SC2/WG6 N317.rev. Архивировано из оригинала (PDF) 2020-10-26.{{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  48. ^ ISO/TC 97/SC 2 (1982). Набор управляющих символов C0 японского стандарта JIS C 6225-1979 (PDF) . ITSCJ/ IPSJ . ISO-IR -74.{{citation}}: CS1 maint: числовые имена: список авторов ( ссылка )
  49. ^ Printronix (2012). Справочное руководство программиста OKI® (PDF) . стр. 26.
  50. ^ ISO/TC 46 (1983-06-01). Дополнительные контрольные коды для библиографического использования в соответствии с международным стандартом ISO 6630 (PDF) . ITSCJ/ IPSJ . ISO-IR -67.{{citation}}: CS1 maint: числовые имена: список авторов ( ссылка )
  51. ^ ISO/TC 46 (1986-02-01). Дополнительные контрольные коды для библиографического использования в соответствии с международным стандартом ISO 6630 (PDF) . ITSCJ/ IPSJ . ISO-IR -124.{{citation}}: CS1 maint: числовые имена: список авторов ( ссылка )
  52. ^ ab Umamaheswaran, VS (1999-11-08). "3.3 Шаг 2: Преобразование байтов". UTF-EBCDIC . Консорциум Unicode . Технический отчет Unicode № 16. 64 управляющих символа […], символ ASCII DELETE (U+007F) […] отображаются в соответствии с соглашениями EBCDIC, как определено в IBM Character Data Representation Architecture, CDRA, с одним исключением — пары управляющих символов перевода строки EBCDIC и новой строки заменяются парами CDRA по умолчанию на управляющие символы перевода строки (U+000A) и следующей строки (U+0085) ISO/IEC 6429
  53. ^ Стил, Шон (1996-04-24). cp037_IBMUSCanada в таблице Unicode. Microsoft / Unicode Consortium .
  54. ^ ab "23.1: Управляющие коды" (PDF) . Стандарт Unicode (ред. 15.0.0). Консорциум Unicode . 2022. стр. 914–916. ISBN 978-1-936213-32-0.