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

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

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

История

История управляющих символов восходит к ранним дням телетайпов и телеграфных систем. В середине XX века, когда появились первые электронно-вычислительные машины (ЭВМ), возникла необходимость в стандартизации способов обмена информацией между устройствами. В 1963 году был разработан стандарт ASCII, который включал 33 управляющих символа (коды от 0 до 31 и 127). Эти символы предназначались для управления телетайпами, принтерами и другими периферийными устройствами. Например, символ «Возврат каретки» (CR, код 13) перемещал печатающую головку в начало строки, а «Перевод строки» (LF, код 10) — на следующую строку. С развитием компьютерных систем управляющие символы были адаптированы для управления текстовыми терминалами и операционными системами.

В 1970-х годах стандарт ASCII был расширен до 8-битных кодировок, таких как ISO 8859, которые добавили дополнительные управляющие символы для работы с графикой и специальными функциями. С появлением Unicode в 1990-х годах управляющие символы были включены в его базовую плоскость (C0 Controls и C1 Controls), что обеспечило их поддержку в современных системах.

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

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

По стандарту ASCII (C0 Controls)

ASCII определяет 33 управляющих символа с кодами 0–31 и 127. Они делятся на подгруппы:

  • Управление передачей данных: символы, используемые для синхронизации и контроля потока данных (например, STX — Start of Text, ETX — End of Text, ACK — Acknowledge).
  • Управление форматом: символы, влияющие на расположение текста на странице или экране (например, BS — Backspace, HT — Horizontal Tab, FF — Form Feed).
  • Управление устройством: символы для управления периферийными устройствами, такими как принтеры или модемы (например, DC1 — Device Control 1, DC2 — Device Control 2).
  • Управление разделением информации: символы для разделения данных на логические блоки (например, FS — File Separator, GS — Group Separator).

По стандарту Unicode (C1 Controls)

Unicode включает дополнительные управляющие символы с кодами 128–159 (U+0080–U+009F), известные как C1 Controls. Они предназначены для расширенных функций, таких как управление шрифтами, цветами и графикой в терминалах (например, CSIControl Sequence Introducer, OSC — Operating System Command).

По функциональному назначению

В современных системах управляющие символы часто делят на:

  • Текстовые управляющие символы: используются для форматирования текста (например, LF, CR, TAB).
  • Управляющие последовательности: комбинации символов, начинающиеся с Escape (ESC, код 27), которые интерпретируются как команды для терминала или принтера (например, ANSI escape-коды).
  • Символы-заполнители: используются для обозначения отсутствия данных или ошибки (например, NUL — Null, SUB — Substitute).

Устройство и характеристики

Управляющие символы представляют собой коды фиксированной длины (в ASCII — 7 бит, в Unicode — от 8 до 32 бит). Их интерпретация зависит от контекста: в текстовом файле они могут быть невидимыми, но при передаче на устройство вывода вызывают определённые действия. Например, символ LF (код 10) в Unix-подобных системах обозначает конец строки, а в Windows используется комбинация CR+LF (коды 13 и 10).

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

Код (дес.)СимволНазваниеФункция
0NULNullЗаполнитель, отсутствие данных
7BELBellЗвуковой сигнал (звонок)
8BSBackspaceВозврат на один символ назад
9HTHorizontal TabГоризонтальная табуляция
10LFLine FeedПеревод строки (новая строка)
13CRCarriage ReturnВозврат каретки (в начало строки)
27ESCEscapeНачало управляющей последовательности
127DELDeleteУдаление символа (часто используется как стирание)

Применение

Управляющие символы широко используются в различных областях информационных технологий:

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

  • Протоколы передачи данных: в сетевых протоколах, таких как Telnet или SSH, управляющие символы используются для синхронизации и управления сессией (например, ACK для подтверждения приёма).
  • Файловые форматы: в текстовых файлах управляющие символы определяют структуру строк (LF в Unix, CR+LF в Windows). В формате CSV символы-разделители (например, FS) используются для разделения полей.
  • Управление принтерами: символы FF (Form Feed) и CR используются для управления подачей бумаги и позиционированием печатающей головки.

В терминалах и эмуляторах

  • ANSI escape-коды: последовательности, начинающиеся с ESC, позволяют управлять цветом, положением курсора и стилем текста в текстовых терминалах (например, \033[31m включает красный цвет).
  • Управление курсором: символы BS и CR используются для перемещения курсора в текстовых редакторах и консолях.

В операционных системах

  • Unix-подобные системы: символ LF используется как разделитель строк, а символ NUL — как терминатор строк в языке C.
  • Windows: комбинация CR+LF применяется в текстовых файлах, а символ EOF (End of File, код 26) — для обозначения конца файла в некоторых контекстах.

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

  • Управление потоками: в языках программирования, таких как C, управляющие символы используются в строках для обозначения специальных символов (например, \n для LF, \t для HT).
  • Сериализация данных: символы-разделители (например, RS — Record Separator) применяются для структурирования данных в протоколах, таких как JSON или XML (хотя в современных форматах они редко используются напрямую).

Примеры

  • В текстовом редакторе: при нажатии клавиши Enter в Windows генерируется последовательность CR+LF, что приводит к переходу на новую строку. В Unix-подобных системах — только LF.
  • В консоли: команда echo -e "\033[31mКрасный текст\033[0m" в Linux выводит текст красным цветом, используя ANSI escape-коды.
  • В протоколе Telnet: символ IAC (Interpret as Command, код 255) используется для начала управляющей последовательности, например, для переговоров о параметрах терминала.

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

  • Символ NUL (код 0) в ASCII изначально использовался для заполнения пауз в телетайпах, чтобы дать механизму время на обработку данных. В современных системах он часто используется как терминатор строк в языке C.
  • Символ BEL (код 7) в ранних телетайпах приводил в действие звонок для привлечения внимания оператора. В современных компьютерных системах он может вызывать звуковой сигнал динамика.
  • В стандарте Unicode управляющие символы C0 и C1 занимают отдельные диапазоны, но многие из них (например, символы C1) редко используются в современных приложениях, так как их функции заменены более гибкими escape-последовательностями.
  • В некоторых старых системах (например, в CP/M) символ EOF (код 26) использовался для обозначения конца файла, в то время как в современных системах размер файла определяется метаданными файловой системы.

Критика

Управляющие символы, особенно из стандарта ASCII, подвергаются критике за их ограниченность и неоднозначность в современных системах. Например, различия в интерпретации символов конца строки (LF в Unix, CR+LF в Windows) приводят к проблемам совместимости при обмене текстовыми файлами. Кроме того, многие управляющие символы, такие как DC1 и DC2, устарели и не используются в современных протоколах, что создаёт избыточность в стандартах. В Unicode управляющие символы C1 часто игнорируются или заменяются более современными механизмами, такими как управляющие последовательности.

Источники

  • Стандарт ASCII (ANSI X3.4-1968)
  • Спецификация Unicode (Unicode Standard, Version 15.0)
  • RFC 854 (Telnet Protocol Specification)
  • Документация по ANSI escape-кодам (ECMA-48)
  • Книга: «Кодирование информации» (автор: В. В. Лидовский, 2005)

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

На главную BFOmetr →