Управля́ющие си́мволы — это символы в кодировке, предназначенные для управления устройствами, организации передачи данных и других целей и, как правило, не имеющие графического представления[a]. Управляющие символы противопоставляются печатным (графическим) символам, предназначенным для написания, печати или иного отображения в форме, которая может быть прочитана человеком.
В настоящее время многие управляющие символы или не используются вообще, или используются не по назначению, поскольку теперь для осуществления упомянутых функций управления применяются форматы файлов, языки управления устройствами (такие как Postscript) и сетевые протоколы.
Стандарт POSIX требует обязательного наличия лишь восьми управляющих символов — \0, \a, \b, \t, \n, \v, \f и \r (см. переносимый набор символов).
В 1963 году была принята первая редакция стандарта ASCII, в которой было определено 35 управляющих символов. Большинство из них располагалось в диапазоне 0x00—0x1F, за исключением символов ACK, ESC и DEL, которые располагались в диапазоне 0x7C—0x7F. В редакции 1967 года символы ACK и ESC были перенесены в основной диапазон, а их место заняли, соответственно, вертикальная черта (|) и тильда (~).
Управляющие символы ASCII предназначались для управления работой телетайпов и видеотерминалов и вводились на них сочетаниями с клавишей Ctrl, при использовании которой обнулялся старший (6-й, считая с 0) бит кода введённого символа. В современных компьютерных системах нигде, кроме эмуляторов терминала, не предусмотрен ввод этих символов напрямую (кроме символов табуляции и перевода строки), и большинство из перечисленных управляющих символов не используется.
Обозначает отсутствие данных на носителе (изначально таковым была перфолента, где единичный бит кодируется наличием отверстия, а нулевой бит — его отсутствием; участки перфоленты, не содержащие данные, не имеют кодовых отверстий, то есть содержат символы NUL). Некоторые терминалы отображают его как пробел, но это некорректно. Используется для обозначения конца последовательности (строки) символов в некоторых языках программирования (например, Си).
При вводе в терминале в Unix-подобныхОС интерпретируется как конец вводимых данных. Если текущая программа брала данные с терминала, то она завершается, как только обработает всё, что было до символа EOT.
Перемещает позицию печати на один символ назад. На принтерах может использоваться для наложения одного символа на другой, например: =BS/ → ≠. При вводе в терминале иногда используется для удаления предшествующего символа.
Пропускает текущую страницу и продолжает печать со следующей (изначально — без возврата каретки). При выводе в терминале этот символ обычно эквивалентен переводу строки (CR), однако его ввод может осуществлять очистку экрана.
Перемещает позицию печати в начало строки (изначально — без перевода строки). Разделяет строки текстовых файлов в некоторых ОС, например классической Mac OS (но не в Mac OS X). Во многих других ОС (CP/M, MS-DOS и Microsoft Windows) для разделения строк используется последовательность символов возврата каретки и перевода строки (LF) — 0x0D0x0A, файлы с которой можно отправлять непосредственно на принтер.
Ставится на месте символов, значения которых были потеряны при передаче. В CP/M и MS-DOS использовался для обозначения конца как текстовых файлов, так и вводимых в консоли данных (хотя для этого были предназначены символы ETX и EOT).
Означает, что следующие за ним символы имеют значение, отличное от определённого в стандарте. Обычно начинает управляющие последовательности (см. также ANSI.SYS).
Одно из предназначений — удаление (забивание) ошибочных символов на перфоленте (поскольку символ DEL, состоящий из семи единичных битов, соответствует пробитию отверстий во всех кодовых дорожках семидорожечной перфоленты), где он трактуется как отсутствие данных (эквивалентен NUL). В терминале может быть введён либо клавишей ← Backspace, либо клавишей Delete.
U+FEFF, ZERO WIDTH NO-BREAK SPACE / BYTE ORDER MARK, неразрывный пробел нулевой ширины / метка порядка байтов. Этот символ используется для указания того, что данный файл записан в UTF-16 или UTF-32 с определённым порядком байтов (поскольку символа U+FFFE нет, а в UTF-8 байты 0xFE и 0xFF не используются). Использование этого символа в качестве неразрывного пробела нулевой ширины, несмотря на первоначальное название (ZERO WIDTH NO-BREAK SPACE), не рекомендуется; для этого есть символ U+2060 (WORD JOINER).
U+FFFC, OBJECT REPLACEMENT CHARACTER, объектно-заменяющий символ. Указывает, что в этом месте текста должен находиться какой-то объект (например, изображение или виджет).
U+FFFD, REPLACEMENT CHARACTER, заменяющий символ. Используется, когда значение символа неизвестно или не может быть выражено в Юникоде (см. также символ SUB).
↑Исключениями из данного правила являются, к примеру, управляющие символы WRU (who are you с англ. — «кто там») и BELL (с англ. — «звонок») телетайпного кода ITA2, которые, напротив, имеют графическое представление и могут печататься на телеграфной ленте. Также к управляющим символам в ITA2 и ряде других кодировок относят пробел.
↑Для первых 32 управляющих символов это комбинация Ctrl и клавиши, соответствующей символу с кодом на 64 больше, чем код требуемого управляющего символа.