Введение

Контрольные символы в Unicode, в диапазоне от U+0000 до U+001F (C0) и от U+0080 до U+009F (C1).

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

Контроль за С0

ASCII определил 32 управляющих символа, плюс необходимый дополнительный символ для DEL, 7FHEX или 01111111BIN (необходимый для пробивания всех отверстий на бумажной ленте и ее стирания). Это большое количество кодов было желательно в то время, поскольку многобайтовые управляющие символы потребовали бы реализации конечного автомата в терминале, что было очень сложно с современной электроникой и механическими терминалами. Только несколько кодов сохранили свое использование: BEL, ESC и символы "эффектор формата" (FEn) BS, TAB, LF, VT, FF и CR. Другие не используются или приобрели другие значения, например, NUL является терминатором строки C. Некоторые протоколы передачи данных, такие как ANPA 1312, Kermit и XMODEM, широко используют SOH, STX, ETX, EOT, ACK, NAK и SYN для целей, близких к их первоначальным определениям; а некоторые форматы файлов используют "разделители информации" (ISn), такие как формат информации Unix и строковый метод Python. Названия некоторых кодов были изменены в ISO 6429:1992 (или ECMA 48:1991), чтобы быть нейтральными по отношению к направлению письма. Используемые сокращения не были изменены, поскольку стандарт уже предусматривал, что они останутся неизменными при переводе стандарта на другие языки. В этой таблице показаны как новые, так и старые названия для переименованных управляющих символов (старое название соответствует сокращению). + Коды управления ASCII, первоначально определенные в ANSI X3.4. Сокращения Название Описание000NUL␀Null Ничего не делает. Код пустой бумажной ленты, также используется для заполнения для замедления передачи.101TC1, SOH␁Начало заголовка Первый символ заголовка сообщения.202TC2, STX␂Начало текста Завершает заголовок и начинает текст сообщения.303TC3, ETX␃Конец текста Завершает текст сообщения, начинает нижний колонтитул (до следующего символа TC). Может переводить терминалы в режим ожидания, например, в Perl. Соответствующий код символа управления называется "СИМВОЛ ЗВОНКА". Впоследствии Perl перешел на использование BELL для эмодзи в версии 5.18.␇Bell, AlertВызов для привлечения внимания оператора.808FE0, BS␈BackspaceПеремещение на одну позицию влево. Следующий символ может перезаписать или заменить существующий символ.909FE1, HT␉Горизонтальная табуляцияПеремещение вправо до следующей позиции табуляции.100AFE2, LF␊Перевод строкиПеремещение вниз на ту же позицию на следующей строке (некоторые устройства также перемещаются в левый столбец).110BFE3, VT␋Вертикальная табуляцияПеремещение вниз на следующую позицию вертикальной табуляции.120CFE4, FF␌Форма коррекцииПеремещение вниз в начало следующей страницы.130DFE5, CR␍Возврат кареткиПеремещение в столбец ноль, оставаясь на той же строке.140ESO, LS0␎Сдвиг наружуПереключение на альтернативный набор символов.150SIF, LS1␏Сдвиг внутрьВозврат к обычному набору символов после SO.1610␐Data Link EscapeПринудительная интерпретация последующих символов иным способом.1711DC1, XON␑Управление устройством 1Включение (DC1 и DC2) или выключение (DC3 и DC4) устройств. Телетайп использовал их для считывателя и перфоратора бумажной ленты. Первое использование стало де-факто стандартом для программного управления потоком.1812DC2, TAPEDevice Control Two1913DC3, XOFFDevice Control Three2014DC4, TAPEDevice Control Four2115TC8, NAK␕Отрицательное подтверждениеОтрицательный ответ отправителю, например, при обнаружении ошибки.2216TC9, SYN␖Синхронный простойОтправляется в синхронных системах передачи, когда другие символы не передаются.2317TC10, ETB␗Конец блока передачиКонец блока данных при разделении данных на блоки для передачи.2418CAN␘ОтменаУказывает, что данные, предшествующие ему, содержат ошибку или должны быть проигнорированы.2519EM␙Конец средыУказывает на бумажных или магнитных лентах, что достигнут конец используемой части ленты. Попытка определить метод преобразования 8-битного "расширенного ASCII" кода в соответствующий 7-битный код и наоборот (т.е. все, кроме управляющих кодов C0), чтобы 8-битная среда печатала тот же символ с установленным старшим битом. Это означало, что диапазон не может быть напечатан в 7-битной среде, поэтому было решено, что никакой альтернативный набор символов не может их использовать, и эти коды должны быть дополнительными управляющими кодами, ставшими известными как управляющие коды C1. Чтобы 7-битная среда могла использовать эти новые управляющие символы, последовательности ESC @ через ESC должны были считаться эквивалентными. и JIS X 0211 (ранее JIS C 6323). Символические имена, определенные в ISO 10646 и ранних проектах, но не в ISO/IEC 6429 (, и) также используются. @12880PADПредлагается в качестве "заполнителя" или "старшего байта" для однобайтовых символов, чтобы сделать их двухбайтовыми для облегчения взаимодействия с многобайтовыми символами. Extended Unix Code (EUC) иногда использует это. A12981HOPСледует за графическим символом, где разрешен перенос строки. Примерно эквивалентно мягкому переносу или нулевому пробелу, за исключением того, что он не определяет, что печатается при переносе строки. C13183NBHЗапрет переносаСледует за графическим символом, который не следует разбивать. См. также соединитель слов. D13284INDИндексПеремещение вниз на одну строку без горизонтального перемещения, чтобы устранить неоднозначность в значении LF. E13385NELСледующая строкаЭквивалентно CR+LF, чтобы соответствовать управляющему символу EBCDIC. F13486SSAНачало выбранной областиИспользуется в терминалах, ориентированных на блоки. В xterm перемещает в нижний левый угол экрана, поскольку определенное программное обеспечение предполагает такое поведение. G13587ESAКонец выбранной областиH13688HTSУстановка табуляции символов, Установка горизонтальной табуляцииУстановка позиции табуляции в текущей позиции. I13789HTJВыравнивание текста по правому краю относительно следующей позиции табуляции. J1388AVTSУстановка табуляции строк, Установка вертикальной табуляцииУстановка позиции вертикальной табуляции. K1398BPLDЧастичная линия вперед, Частичная линия внизДля создания подстрочных и надстрочных символов в ISO/IEC 6429. Подстрочные используют текст PLD PLU, а надстрочные - текст PLU PLD. L1408CPLUЧастичная линия назад, Частичная линия вверхM1418DRIОбратный перевод строки, Обратный индексПеремещение вверх на одну строку. N1428ESS2Следующий символ из наборов G2 или G3 соответственно. O1438FSS3P14490DCSУправление строкой устройстваПоследовательность печатных символов (0x20–0x7E) и эффекторов формата (0x08–0x0D), завершающаяся ST (0x9C). Xterm определил ряд таких символов. Q14591PU1Приватное использование 1Зарезервировано для частной функции, согласованной между отправителем и получателем данных. R14692PU2Приватное использование 2S14793STSУстановка состояния передачиT14894CCHСимвол отменыДеструктивное удаление назад, чтобы устранить неоднозначность в значении U14995MWОжидание сообщенияV15096SPAНачало защищенной областиИспользуется в терминалах, ориентированных на блоки. W15197EPAКонец защищенной областиX15298SOSНачало строкиПоследовательность управляющих символов, завершающаяся (0x9C), которая (в отличие от , , или ) может содержать любой символ, кроме SOS или ST. Y15399SGC, SGCISingle Graphic Character IntroducerПредназначен для печати произвольного символа Unicode; за ним следует этот символ, скорее всего, закодированный в UTF-1. Kermit использовал APC для передачи команд.^1589EPMPrivacy Message 1599FAPCApplication Program Command

Другие наборы контрольных кодов

Механизм расширения ISO/IEC 2022 (ECMA 35) позволял использовать управляющие последовательности для изменения наборов C0 и C1. Стандартный набор контрольных символов C0, представленный выше, выбирается с помощью определенной последовательности, а указанный набор C1 – с помощью последовательности "фиксированных" кодированных символов SP и DEL, которые доступны по своим кодам ASCII во всех кодировках, соответствующих стандарту. Также в стандарте указано, что если набор C0 включает коды управления передачей (TCn), они должны быть закодированы по своим кодам ASCII и не могут быть помещены в набор C1, а любые новые коды управления передачей должны быть включены в набор C1. Другие стандарты заменили EM и GS на SS2 и SS3, чтобы эти функции можно было использовать в 7-битной среде. Некоторые наборы заменили FS на SS2 (аналогично ANPA 1312). JIS C 6225, впоследствии обозначенный как JIS X 0207, был отозван и заменен, где FS был заменен на CEX или "Расширение управления", которое вводит управляющие последовательности для вертикального отображения текста, верхних и нижних индексов, а также для передачи пользовательской графики символов. Различные специализированные наборы контрольных кодов C1 зарегистрированы для использования в форматах Videotex. Хотя символ "Новая строка" (NL) соответствует ISO/IEC 6429 (хотя часто заменяется на LF в соответствии с соглашением о завершении строк UNIX),