Управляющие символы
Управляющие символы — это символы в кодировках символьных наборов, которые не представляют собой печатные знаки (буквы, цифры, знаки препинания), а предназначены для управления устройствами вывода, передачи данных или интерпретации текста. Они являются частью стандартных кодировок, таких как 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. Они предназначены для расширенных функций, таких как управление шрифтами, цветами и графикой в терминалах (например, CSI — Control 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
| Код (дес.) | Символ | Название | Функция |
|---|---|---|---|
| 0 | NUL | Null | Заполнитель, отсутствие данных |
| 7 | BEL | Bell | Звуковой сигнал (звонок) |
| 8 | BS | Backspace | Возврат на один символ назад |
| 9 | HT | Horizontal Tab | Горизонтальная табуляция |
| 10 | LF | Line Feed | Перевод строки (новая строка) |
| 13 | CR | Carriage Return | Возврат каретки (в начало строки) |
| 27 | ESC | Escape | Начало управляющей последовательности |
| 127 | DEL | Delete | Удаление символа (часто используется как стирание) |
Применение
Управляющие символы широко используются в различных областях информационных технологий:
В текстовых протоколах и форматах
- Протоколы передачи данных: в сетевых протоколах, таких как 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 →