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

Управляющие символы ASCII

Управляющие символы ASCII — это группа символов (коды 0–31 и 127) в таблице кодировки ASCII (American Standard Code for Information Interchange), которые не представляют печатные знаки (буквы, цифры, знаки препинания), а предназначены для управления устройствами, форматирования текста, передачи данных и организации связи. Они также известны как непечатаемые или управляющие коды. В отличие от печатных символов, управляющие символы не отображаются на экране или бумаге, а интерпретируются оборудованием или программным обеспечением как команды.

История

Разработка управляющих символов ASCII началась в 1960-х годах в рамках работ Американской ассоциации стандартов (ASA, позднее ANSI) по созданию универсального кода для обмена информацией. Первая версия стандарта ASCII была опубликована в 1963 году. Управляющие символы были заимствованы из более ранних систем телеграфной связи, в частности кода Бодо (Baudot) и стандарта FIELDATA, где уже существовали коды для управления телетайпами и перфоленточными устройствами.

Основной целью введения управляющих символов было обеспечение совместимости между различными моделями телетайпов, принтеров и модемов. В 1965 году стандарт был пересмотрен, и в него были добавлены символы, необходимые для работы с магнитными лентами и другими запоминающими устройствами. Окончательная версия ASCII (ANSI X3.4-1968) закрепила 33 управляющих символа (коды 0–31 и 127), которые остаются неизменными до настоящего времени.

С развитием вычислительной техники в 1970–1980-х годах управляющие символы стали широко применяться в операционных системах (например, CP/M, MS-DOS, Unix) для управления терминалами и принтерами. С появлением графических интерфейсов и современных протоколов передачи данных (TCP/IP, HTTP) многие из этих символов утратили своё первоначальное значение, но сохранились в стандарте для обратной совместимости.

Классификация

Управляющие символы ASCII делятся на несколько функциональных групп в зависимости от их назначения.

Символы управления передачей данных

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

  • SOH (Start of Heading, код 1) — начало заголовка сообщения.
  • STX (Start of Text, код 2) — начало текста.
  • ETX (End of Text, код 3) — конец текста.
  • EOT (End of Transmission, код 4) — конец передачи.
  • ENQ (Enquiry, код 5) — запрос ответа от удалённого устройства.
  • ACK (Acknowledge, код 6) — подтверждение приёма.
  • NAK (Negative Acknowledge, код 21) — отрицательное подтверждение (ошибка приёма).
  • SYN (Synchronous Idle, код 22) — синхронизация при синхронной передаче.
  • ETB (End of Transmission Block, код 23) — конец блока данных.

Эти символы активно применялись в протоколах BSC (Binary Synchronous Communication) и HDLC, а также в ранних модемных соединениях.

Символы форматирования текста

Группа кодов, управляющих расположением текста на печатном устройстве или экране:

  • BS (Backspace, код 8) — возврат каретки на одну позицию влево (используется для перепечатки символов).
  • HT (Horizontal Tab, код 9) — горизонтальная табуляция (перевод курсора к следующей позиции табуляции).
  • LF (Line Feed, код 10) — перевод строки (перемещение курсора на одну строку вниз).
  • VT (Vertical Tab, код 11) — вертикальная табуляция.
  • FF (Form Feed, код 12) — перевод страницы (подача бумаги на новую страницу).
  • CR (Carriage Return, код 13) — возврат каретки (перемещение курсора в начало строки).

В современных системах символы LF и CR используются в комбинации (CR+LF в Windows, LF в Unix-подобных системах) для обозначения конца строки в текстовых файлах.

Символы управления устройством

Коды, предназначенные для управления периферийными устройствами (принтерами, модемами, терминалами):

  • DC1DC4 (Device Control 1–4, коды 17–20) — управляющие сигналы для включения/выключения устройств. Например, DC1 (XON) и DC3 (XOFF) в протоколе управления потоком.
  • CAN (Cancel, код 24) — отмена текущей операции.
  • EM (End of Medium, код 25) — конец носителя (например, конец магнитной ленты).
  • SUB (Substitute, код 26) — замена ошибочного символа.
  • ESC (Escape, код 27) — начало управляющей последовательности (например, ESC-последовательности ANSI для управления терминалом).
  • FS, GS, RS, US (File Separator, Group Separator, Record Separator, Unit Separator, коды 28–31) — разделители данных для иерархических структур.

Прочие управляющие символы

  • NUL (Null, код 0) — пустой символ, используется для заполнения пауз или как терминатор строк в языке C.
  • BEL (Bell, код 7) — звуковой сигнал (звонок терминала).
  • SO (Shift Out, код 14) — переключение на альтернативный набор символов.
  • SI (Shift In, код 15) — возврат к основному набору символов.
  • DEL (Delete, код 127) — удаление символа (изначально использовался для пробивки отверстий на перфоленте).

Устройство и представление

Управляющие символы ASCII занимают диапазон кодов от 0 до 31 (0x00–0x1F) и код 127 (0x7F). В шестнадцатеричной системе они обозначаются как 0x00–0x1F и 0x7F. В текстовых файлах управляющие символы могут быть представлены в виде escape-последовательностей (например, \n для LF, \r для CR, \t для HT) или в виде управляющих кодов с префиксом ^ (например, ^C для ETX, ^D для EOT).

В программировании управляющие символы часто используются для управления терминалом: например, последовательность \033[2J (ESC + [2J) очищает экран в ANSI-совместимых терминалах. В операционной системе Unix символ ^D (EOT) завершает ввод с клавиатуры, а ^C (ETX) прерывает выполняющуюся программу.

Применение

В системах связи

Управляющие символы исторически использовались в протоколах последовательной передачи данных (RS-232, модемы). Например, символы XON (DC1) и XOFF (DC3) управляли потоком данных, предотвращая переполнение буфера приёмника. В протоколе ASCII-кодирования для телеграфной связи символы SOH, STX, ETX и EOT обрамляли сообщения.

В текстовых файлах и операционных системах

Символы LF, CR и HT являются основой форматирования текста. В Unix-подобных системах конец строки обозначается одним символом LF (код 10), в Windows — последовательностью CR+LF (коды 13 и 10), в классической Mac OS — только CR. Символ TAB (HT) используется для выравнивания данных в таблицах.

В программировании

Управляющие символы широко применяются в языках программирования:

  • \0 (NUL) — терминатор строки в C и C++.
  • \n (LF) — перевод строки.
  • \r (CR) — возврат каретки.
  • \t (HT) — табуляция.
  • \b (BS) — возврат на одну позицию (например, для анимации в консоли).

В языке Python управляющие символы могут быть вставлены в строку с помощью escape-последовательностей, а в Bash — с помощью $'\n' или echo -e.

В протоколах и форматах данных

Некоторые управляющие символы используются в сетевых протоколах:

  • NUL — заполнитель в протоколе HTTP (например, в заголовках).
  • ESC — начало управляющей последовательности в протоколах ANSI-терминалов (например, для изменения цвета текста).
  • SUB — символ замены в старых протоколах передачи файлов (XMODEM, YMODEM).

Примеры использования

  • В текстовом редакторе vi (Unix) символ ^D (EOT) используется для прокрутки экрана вниз.
  • В протоколе Telnet символ ^] (ESC) открывает командный режим.
  • В языке ассемблера x86 символ 0x00 (NUL) часто используется как терминатор строки.
  • В системах электронной почты символы CR и LF разделяют заголовки и тело письма (RFC 2822).

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

  • Символ DEL (код 127) изначально был задуман для удаления символа на перфоленте: все семь битов устанавливались в 1, что позволяло «забить» отверстие, сделав его нечитаемым.
  • В ранних версиях ASCII (1963) символы SO и SI использовались для переключения между латинским и кириллическим алфавитами, но позже были заменены на отдельные кодировки (например, KOI8).
  • Символ BEL (код 7) до сих пор поддерживается в современных терминалах и может вызывать звуковой сигнал системы.
  • Управляющие символы ASCII стали основой для более поздних стандартов, таких как Unicode, где они сохранены в первых 128 кодовых позициях (U+0000–U+007F).

Критика и устаревание

С развитием графических интерфейсов и высокоуровневых протоколов многие управляющие символы ASCII утратили практическое значение. Например, символы FS, GS, RS, US редко используются в современных системах, а их функции заменены структурами данных (XML, JSON). Управление потоком (XON/XOFF) вытеснено аппаратными методами (RTS/CTS) в современных последовательных интерфейсах (USB, Ethernet). Тем не менее, символы LF, CR, HT, NUL и ESC остаются критически важными для совместимости с устаревшими системами и текстовыми форматами.

Источники

  • ANSI X3.4-1968: American Standard Code for Information Interchange.
  • RFC 20: ASCII format for network interchange (1969).
  • Mackenzie, C. E. (1980). Coded Character Sets: History and Development. Addison-Wesley.
  • ISO/IEC 646:1991 — Information technology — ISO 7-bit coded character set for information interchange.

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

На главную BFOmetr →