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 и символы «Эффектора формата» (FE n ) BS, TAB, LF, VT, FF и CR. Другие не используются или приобрели другие значения, например, NUL является терминатором строки C. Некоторые протоколы передачи данных, такие как ANPA-1312 , Kermit и XMODEM , широко используют SOH, STX, ETX, EOT, ACK, NAK и SYN для целей, приближающихся к их первоначальным определениям; а некоторые форматы файлов используют «разделители информации» (IS n ), такие как информационный формат Unix [1] и строковый метод разделения линий Python . [2]

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

  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] и соответствующая кодовая точка контрольного изображения называется СИМВОЛ ЗВОНКА. Впоследствии 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. ^ Escape-последовательность ' \e ' не является частью ISO C и многих других спецификаций языка. Однако его понимают несколько компиляторов, включая GCC .

Элементы управления C1

В 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 .

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

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

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

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

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

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

Юникод

Unicode наследует свои первые 256 кодовых точек из ISO 8859-1, а следовательно, и 65 кодовых точек, описанных выше, что дает им общую категорию Cc (контроль). Это:

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

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

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

Сноски

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

Рекомендации

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