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

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

Управляющие символы C0 — это набор из 32 кодовых позиций (0x00–0x1F) в стандарте ASCII и других системах кодирования, предназначенных для управления устройствами вывода, передачи данных и форматирования текста. Они не отображаются как графические символы, а выполняют служебные функции, такие как перевод строки, возврат каретки, сигнал звонка или сброс устройства. Название «C0» происходит от обозначения первого блока управляющих символов в стандарте ISO/IEC 646, где они занимают диапазон 0–31 (0x00–0x1F). В отличие от управляющих символов C1 (диапазон 0x80–0x9F), C0 являются базовыми и поддерживаются практически всеми системами, работающими с текстом.

История

Управляющие символы C0 возникли в середине XX века вместе с развитием телетайпов и первых компьютерных терминалов. В 1963 году Американская ассоциация стандартов (ANSI) опубликовала первую версию ASCII, где были определены 33 управляющих символа (включая DEL в позиции 0x7F). В 1967 году стандарт был пересмотрен, и набор C0 стал включать 32 символа (0x00–0x1F), а DEL был вынесен в отдельную позицию. В 1972 году Международная организация по стандартизации (ISO) приняла стандарт ISO 646, который закрепил этот набор как международный. Впоследствии управляющие символы C0 были включены в Unicode (U+0000–U+001F) и остаются частью современных систем кодирования, хотя их использование в повседневной работе с текстом сократилось.

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

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

  • Управление передачей данных: символы, используемые для синхронизации и контроля потоков в последовательных линиях связи (например, XON, XOFF).
  • Управление форматированием: символы, влияющие на расположение текста на устройстве вывода (например, перевод строки, возврат каретки).
  • Управление устройством: символы для включения/выключения функций периферийных устройств (например, звонок, включение принтера).
  • Разделители информации: символы, используемые для структурирования данных (например, разделитель записей, разделитель групп).

Полный список управляющих символов C0

Ниже приведена таблица всех 32 символов C0 с их кодами (в шестнадцатеричной и десятичной системах), аббревиатурами и краткими описаниями:

Код (hex)Код (dec)АббревиатураНазваниеОписание
0x000NULNullПустой символ, используется для заполнения или завершения строк
0x011SOHStart of HeadingНачало заголовка сообщения
0x022STXStart of TextНачало текста
0x033ETXEnd of TextКонец текста
0x044EOTEnd of TransmissionКонец передачи
0x055ENQEnquiryЗапрос подтверждения связи
0x066ACKAcknowledgeПодтверждение приёма
0x077BELBellЗвуковой сигнал (звонок)
0x088BSBackspaceВозврат на одну позицию назад
0x099HTHorizontal TabГоризонтальная табуляция
0x0A10LFLine FeedПеревод строки (перемещение на одну строку вниз)
0x0B11VTVertical TabВертикальная табуляция
0x0C12FFForm FeedПеревод страницы (прогон листа)
0x0D13CRCarriage ReturnВозврат каретки (в начало строки)
0x0E14SOShift OutПереключение на альтернативный набор символов
0x0F15SIShift InВозврат к стандартному набору символов
0x1016DLEData Link EscapeУправляющий префикс для изменения значения следующих символов
0x1117DC1Device Control 1Управление устройством 1 (включение/возобновление)
0x1218DC2Device Control 2Управление устройством 2
0x1319DC3Device Control 3Управление устройством 3 (отключение/приостановка)
0x1420DC4Device Control 4Управление устройством 4
0x1521NAKNegative AcknowledgeОтрицательное подтверждение (ошибка приёма)
0x1622SYNSynchronous IdleСинхронизация при синхронной передаче
0x1723ETBEnd of Transmission BlockКонец блока передачи
0x1824CANCancelОтмена предыдущего сообщения
0x1925EMEnd of MediumКонец носителя (например, конец ленты)
0x1A26SUBSubstituteЗамена ошибочного символа
0x1B27ESCEscapeУправляющий префикс для расширения команд
0x1C28FSFile SeparatorРазделитель файлов
0x1D29GSGroup SeparatorРазделитель групп
0x1E30RSRecord SeparatorРазделитель записей
0x1F31USUnit SeparatorРазделитель единиц

Применение

Передача данных

В протоколах последовательной связи (например, RS-232, телетайпные сети) управляющие символы C0 используются для управления потоком и синхронизации. Символы DC1 (XON) и DC3 (XOFF) применяются для управления потоком данных (например, в протоколе XON/XOFF). Символы SOH, STX, ETX, EOT, ACK, NAK используются в протоколах с подтверждением (например, в протоколе XMODEM).

Форматирование текста

В текстовых редакторах и системах вёрстки символы LF, CR, HT, FF, VT управляют расположением текста. В системах Unix и Linux перевод строки обозначается символом LF (0x0A), в Windows — последовательностью CR+LF (0x0D 0x0A). Символ HT (0x09) используется для табуляции, а FF (0x0C) — для перехода на новую страницу при печати.

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

Символы DC1–DC4 (0x11–0x14) могут использоваться для включения/выключения периферийных устройств. Например, в старых телетайпах DC1 мог включать ленточный перфоратор, а DC3 — отключать его. Символ BEL (0x07) вызывает звуковой сигнал на терминале.

Протоколы и управляющие последовательности

Символ ESC (0x1B) используется как префикс для управляющих последовательностей ANSI (например, для изменения цвета текста или перемещения курсора в терминалах). Символ SUB (0x1A) в некоторых системах (например, в CP/M) обозначает конец файла.

Особенности в современных системах

В современных операционных системах и текстовых редакторах управляющие символы C0 часто обрабатываются неявно. Например, в большинстве текстовых файлов символы LF и CR используются для разделения строк, а символы HT — для табуляции. Другие символы (например, NUL, BEL, ESC) могут быть не видны пользователю, но сохраняются в двоичных данных. В интерпретаторах командной строки (например, bash, cmd) символы C0 могут использоваться для управления выводом (например, символ BEL для звукового сигнала). В системах Unicode управляющие символы C0 имеют коды U+0000–U+001F и не отображаются в графическом интерфейсе.

Критика и ограничения

Управляющие символы C0 были разработаны для устройств середины XX века и не всегда оптимальны в современных системах. Например, разделение символов перевода строки (CR+LF в Windows) создаёт проблемы совместимости с Unix-системами, где используется только LF. Некоторые символы (например, SUB, EM) утратили практическое значение и используются редко. В современных протоколах передачи данных (например, TCP/IP) управляющие символы C0 не применяются, так как их функции выполняются заголовками пакетов. Кроме того, в некоторых системах (например, в веб-формах) символы C0 могут быть запрещены для ввода из соображений безопасности (например, для предотвращения инъекций).

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

  • Символ NUL (0x00) часто используется в языках программирования (например, в C) для обозначения конца строки.
  • Символ BEL (0x07) изначально вызывал звонок колокольчика на телетайпе; в современных терминалах он воспроизводится как звуковой сигнал через динамик.
  • Символ ESC (0x1B) является основой для управляющих последовательностей ANSI, которые используются в эмуляторах терминалов (например, xterm, PuTTY) для управления цветом, положением курсора и другими параметрами.
  • В некоторых старых системах (например, в MS-DOS) символ SUB (0x1A) использовался для обозначения конца файла в текстовых файлах.

Источники

  • ANSI X3.4-1968: American Standard Code for Information Interchange (ASCII).
  • ISO/IEC 646:1991: Information technology — ISO 7-bit coded character set for information interchange.
  • Unicode Standard, Version 15.0: Chapter 16 — Special Areas and Format Characters.
  • RFC 20: ASCII format for Network Interchange (1969).
  • Книга: «The ASCII Character Set» by R. W. Bemer (1960-е).

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

На главную BFOmetr →