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

редактировать
Кодовая точка в наборе символов, которая не представляет письменный символ

В вычислениях и телекоммуникации, управляющий символ или непечатаемый символ (NPC ) - это кодовая точка (число ) в наборе символов , которая не представляет письменный символ. Они используются как внутриполосная сигнализация, чтобы вызывать эффекты, отличные от добавления символа к тексту. Все остальные символы в основном печатающие, печатаемые или графические символы, за исключением, возможно, «пробела » символ (см. печатаемые символы ASCII ).

Все записи в таблице ASCII под кодом 32 (технически набор управляющих кодов C0 ) относятся к этому типу, включая CR и LF используется для разделения строк текста. Код 127 (DEL ) также является управляющим символом. Расширенные наборы ASCII, определенные в ISO 8859, добавляли коды от 128 до 159 в качестве управляющих символов, это было сделано в первую очередь для того, чтобы, если старший бит был удален, он не изменил печатный символ на Контрольный код C0, но здесь были некоторые назначения, в частности NEL. Этот второй набор называется набором C1.

Эти 65 управляющих кодов были перенесены в Unicode. Unicode добавил больше символов, которые можно было бы рассматривать как элементы управления, но при этом проводится различие между этими «символами форматирования» (такими как не соединяющийся с нулевой шириной ) и 65 управляющими символами.

Набор символов расширенного двоично-десятичного кода обмена (EBCDIC) содержит 65 управляющих кодов, включая все управляющие коды ASCII плюс дополнительные коды, которые в основном используются для управления периферийными устройствами IBM.

0x000x10
0x00NUL DLE
0x01SOH DC1
0x02STX DC2
0x03ETX DC3
0x04EOT DC4
0x05ENQ NAK
0x06ACK SYN
0x07BEL ETB
0x08BS CAN
0x09TAB EM
0x0ALF SUB
0x0BVT ESC
0x0CFF FS
0x0DCR GS
0x0ESO RS
0x0FSI US
0x7FDEL

Содержание

  • 1 История
  • 2 В ASCII
  • 3 В Unicode
  • 4 Дисплей
  • 5 Как управляющие символы отображаются на клавиатуре
  • 6 Назначение
    • 6.1 Управление печатью и отображением
    • 6.2 Структурирование данных
    • 6.3 Управление передачей
    • 6.4 Прочие коды
  • 7 См. Также
  • 8 Примечания и ссылки
  • 9 Внешние ссылки

История

Процедурные знаки в азбуке Морзе являются формой управляющего символа.

В коде Бодо 1870 была введена форма управляющих символов: NUL и DEL. Код Мюррея 1901 добавил возврат каретки (CR) и перевод строки (LF), а другие версии кода Бодо включали другие управляющие символы.

Знак звонка (BEL), который звонил в звонок для оповещения операторов, также был ранним управляющим символом телетайпа.

Управляющие символы также называются «эффекторами формата».

В ASCII

Управляющие символы в ASCII, которые все еще широко используются, включают:

  • 0 (null, NUL, \0 , ^@ ), первоначально предназначенные для быть игнорируемым символом, но теперь используется многими языками программирования , включая C до , обозначает конец строки.
  • 7 (bell, BEL, \a , ^G ), что может привести к тому, что устройство будет издавать предупреждение, такое как звонок, звуковой сигнал или мигание экрана.
  • 8 (backspace, BS, \b, ^H ), может перекрыть предыдущее
  • 9 (горизонтальная табуляция, HT, \t , ^I ), перемещает позицию печати вправо к следующей позиции табуляции.
  • 10 (перевод строки, LF, \n , ^J ), перемещает печатающей головкой на одну строку вниз или к левому краю и вниз. Используется как маркер конца строки в большинстве систем UNIX и их вариантов.
  • 11 (вертикальная табуляция, VT, \v , ^K ), вертикальная табуляция.
  • 12 (подача страницы, FF, \f , ^L ), чтобы принтер выдавал бумагу до верхней части следующей страницы или видеотерминал очищал экран.
  • 13 (возврат каретки, CR, \r , ^M ), перемещает позицию печати в начало строки, разрешая наложение. Используется как маркер конца строки в Classic Mac OS, OS-9, FLEX (и вариантах). Пара CR + LFиспользуется CP / M -80 и его производными, включая DOS и Windows, а также Протоколы уровня приложения , такие как FTP, SMTP и HTTP.
  • 26 (Control-Z, SUB, EOF, ^Z ). Действует как конец файла для ввода-вывода файлов текстового режима Windows.
  • 27 (escape, ESC, \e (GCC только), ^ [). Вводит escape-последовательность .

Управляющие символы могут быть описаны как выполняющие действие, когда пользователь вводит их, например, код 3 (символ конца текста, ETX, ^C ) для прерывания запущенный процесс или код 4 (символ конца передачи, EOT, ^D ), используемый для завершения ввода текста или выхода из оболочки Unix. Эти виды использования обычно имеют мало общего с их использованием, когда они находятся в выводимом тексте, а в современных системах обычно вообще не включают передачу номера кода (вместо этого программа получает тот факт, что пользователь удерживает клавишу Ctrl и нажав кнопку, помеченную буквой «C»).

Было определено довольно много управляющих символов (33 в ASCII, а стандарт ECMA-48 добавляет еще 32). Это было связано с тем, что ранние терминалы имели очень примитивные механические или электрические элементы управления, которые делали любой вид запоминания состояния API довольно дорогим в реализации, поэтому отдельный код для каждой функции выглядел как требование. Расшифровка последовательностей кодов для выполнения функции быстро стала возможной и недорогой, и производители устройств нашли способ отправлять сотни инструкций устройствам. В частности, они использовали код ASCII 27 (escape), за которым следовала серия символов, называемая «управляющей последовательностью» или «escape-последовательностью». Механизм был изобретен Бобом Бемером, отцом ASCII. Например, последовательность кода 27, за которой следуют печатаемые символы «[2; 10H», заставит терминал DEC VT-102 переместить свой курсор в 10-ю ячейку 2-я строка экрана. Для этих последовательностей существует несколько стандартов, в частности ANSI X3.64. Но количество нестандартных вариантов использования велико, особенно среди принтеров, где технологии развиваются намного быстрее, чем любой орган по стандартизации может поспевать.

В Юникоде

В Юникоде «управляющие символы»: U + 0000 - U + 001F (элементы управления C0), U + 007F (удаление) и U + 0080 - U + 009F. (С1 контролирует). Их Общая категория - «Копия». Коды форматирования различаются в общей категории «Cf». Управляющие символы Cc не имеют имени в Юникоде, но вместо этого им даются метки, такие как «».

Отображение

Существует ряд методов отображения непечатаемых символов, которые может быть проиллюстрирован с помощью символа звонка в кодировке ASCII :

  • Кодовая точка : десятичное 7, шестнадцатеричное 0x07
  • Сокращение, часто из трех заглавных букв : BEL
  • Специальный символ, уплотняющий аббревиатуру: Unicode U + 2407 (␇), «символ звонка»
  • Графическое представление ISO 2047 : Unicode U + 237E (⍾), «рисунок для звонка»
  • Обозначение курсора в ASCII, где кодовая точка 00xxxxx представлена ​​как каретка, за которой следует заглавная буква в кодовой точке 10xxxxx: ^ G
  • An escape-последовательность, как в C /C ++ коды символьных строк: \ a, \ 007, \ x07 и т. д.

Как управляющие символы отображаются на клавиатуре

Основанные на ASCII клавиатуры имеют клавишу с пометкой «Control », «Ctrl» или (редко) «Cntl», которая используется во многом как Shift ke. y при нажатии в сочетании с другой буквенной или символьной клавишей. В одной реализации управляющая клавиша генерирует код на 64 места ниже кода для (обычно) прописной буквы, с которой она нажимается в комбинации (т. Е. Вычитает 64 из значения кода ASCII в десятичном виде из (обычно) прописной буквы). Другая реализация состоит в том, чтобы взять код ASCII, созданный ключом, и поразрядным И его с 31, принудительно установив биты 6 и 7 в ноль. Например, нажатие клавиши «control» и буквы «g» или «G» (код 107 в восьмеричной или 71 в с основанием 10, что составляет 01000111 в двоичном создает код 7 (Bell, 7 в базе 10 или 00000111 в двоичном формате). Символ NULL (код 0) представлен Ctrl- @, где «@» - это код, расположенный непосредственно перед «A» в наборе символов ASCII. Для удобства многие терминалы принимают Ctrl-Space в качестве псевдонима для Ctrl- @. В любом случае это создает один из 32 управляющих кодов ASCII от 0 до 31. Этот подход не может представлять символ DEL из-за его значение (код 127), но Ctrl-? часто используется для этого символа, так как вычитание 64 из '?' дает -1, что при маске до 7 бит составляет 127.

Когда управляющая клавиша является удерживая нажатой, буквенные клавиши производят одни и те же управляющие символы независимо от состояния клавиш shift или caps lock. Другими словами, не имеет значения, создавала ли клавиша верхний -регистр или строчная буква. Интерпретация t Клавиша управления с пробелом, графическими символами и цифровыми клавишами (коды ASCII от 32 до 63) различаются в зависимости от системы. Некоторые из них будут выдавать такой же код символа, как если бы управляющая клавиша не удерживалась. Другие системы переводят эти клавиши в управляющие символы, когда управляющая клавиша удерживается нажатой. Интерпретация управляющего ключа с ключами, отличными от ASCII («внешними»), также зависит от системы.

Управляющие символы часто преобразуются в печатную форму, известную как нотация курсора, путем печати каретки (^), а затем символа ASCII, который имеет значение управляющего символа плюс 64. Управляющие символы сгенерированные с использованием буквенных клавиш, таким образом, отображаются с заглавными буквами. Например, ^ G представляет собой код 7, который генерируется нажатием клавиши G при удерживании клавиши управления.

Клавиатуры также обычно имеют несколько одиночных клавиш, которые создают коды управляющих символов. Например, клавиша с надписью «Backspace» обычно дает код 8, код «Tab» 9, «Enter» или «Return» код 13 (хотя некоторые клавиатуры могут выдавать код 10 для «Enter»).

Многие клавиатуры включают в себя клавиши, которые не соответствуют никаким печатным или управляющим символам ASCII, например стрелки управления курсором и функции обработки текстов. Связанные нажатия клавиш передаются компьютерным программам одним из четырех способов: присвоением неиспользуемых в противном случае управляющих символов; с использованием кодировки, отличной от ASCII; использование многосимвольных управляющих последовательностей; или используя дополнительный механизм помимо генерации символов. «Тупой» компьютерные терминалы обычно используют управляющие последовательности. Клавиатуры, подключенные к автономным персональным компьютерам, изготовленным в 1980-х годах, обычно используют один (или оба) из первых двух методов. Современные компьютерные клавиатуры генерируют сканкоды, которые идентифицируют конкретные нажатые физические клавиши; компьютерное программное обеспечение затем определяет, как обращаться с нажатыми клавишами, включая любой из четырех методов, описанных выше.

Цель разработки

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

Управление печатью и отображением

Символы управления печатью впервые использовались для управления физическим механизмом принтеров, самого раннего устройства вывода. Ранней реализацией этой идеи были символы out-of-band ASA для управления кареткой. Позже управляющие символы были интегрированы в поток данных для печати. Символ возврата каретки (CR) при отправке на такое устройство заставляет его помещать символ на краю бумаги, на котором начинается запись (он может или не может также перемещать позицию печати на следующую строку). Символ перевода строки (LF / NL) заставляет устройство помещать позицию печати на следующую строку. Он может (или не может), в зависимости от устройства и его конфигурации, также перемещать позицию печати в начало следующей строки (которая будет крайним левым положением для слева направо скриптов, например в качестве алфавитов, используемых для западных языков, и крайнее правое положение для с письмом справа налево, таких как еврейский и арабский алфавиты). Символы вертикальной и горизонтальной табуляции (VT и HT / TAB) заставляют устройство вывода перемещать позицию печати к следующей позиции табуляции в направлении чтения. Символ подачи страницы (FF / NP) запускает новый лист бумаги и может перемещаться или не перемещаться в начало первой строки. Символ возврата (BS) перемещает позицию печати на один символ назад. На принтерах это чаще всего используется, чтобы принтер мог накладывать символы на символы, чтобы сделать другие, обычно недоступные, символы. На терминалах и других электронных устройствах вывода часто есть варианты конфигурации программного (или аппаратного) обеспечения, которые позволят разрушить обратное пространство (то есть последовательность BS, SP, BS), которое стирает, или неразрушающее, которое не делает. Для сдвига и сдвига символов (SO и SI) выбираются альтернативные наборы символов, шрифты, подчеркивание или другие режимы печати. Чтобы сделать то же самое, часто использовались escape-последовательности.

С появлением компьютерных терминалов, которые физически не печатали на бумаге и, таким образом, предлагали большую гибкость в отношении размещения экрана, стирания и т. Д., Были адаптированы коды управления печатью. Например, при подаче форм обычно экран очищался, а новой страницы для перехода не было. Более сложные escape-последовательности были разработаны, чтобы воспользоваться преимуществами гибкости новых терминалов, да и более новых принтеров. Концепция управляющего персонажа всегда была несколько ограничивающей, особенно когда она использовалась с новым, гораздо более гибким оборудованием. Управляющие последовательности (иногда реализованные как escape-последовательности) могли соответствовать новой гибкости и мощности и стали стандартным методом. Однако было и остается большое разнообразие стандартных последовательностей на выбор.

Структурирование данных

Разделители (файл, группа, запись и единица: FS, GS, RS и US) были созданы для структурирования данных, обычно на ленте, для имитации перфокарты. Конец носителя (EM) предупреждает, что лента (или другой носитель записи) заканчивается. Хотя многие системы используют CR / LF и TAB для структурирования данных, можно встретить управляющие символы-разделители в данных, которые необходимо структурировать. Управляющие символы-разделители не перегружены; они используются только для разделения данных на структурированные группы. Их числовые значения примыкают к символу пробела, который можно рассматривать как член группы, как разделителю слов.

Управление передачей

Символы управления передачей были предназначены для структурирования потока данных и для управления повторной передачей или постепенным отказом, если необходимо, перед лицом ошибок передачи.

Символ начала заголовка (SOH) должен был пометить раздел потока данных, не связанный с данными - часть потока, содержащую адреса и другие служебные данные. Начало текстового символа (STX) отмечает конец заголовка и начало текстовой части потока. Конец текстового символа (ETX) отмечает конец данных сообщения. Широко используемое соглашение - сделать два символа перед ETX контрольной суммой или CRC для целей обнаружения ошибок. Символ конца блока передачи (ETB) использовался для обозначения конца блока данных, где данные были разделены на такие блоки для целей передачи.

Управляющий символ (ESC ) был предназначен для «кавычки» следующего символа, если это был другой управляющий символ, он бы напечатал его вместо выполнения функции управления. Сегодня он практически не используется для этой цели. В зависимости от контекста в качестве видимых «escape-символов » используются различные печатаемые символы.

Замещающий символ (SUB ) был предназначен для запроса перевода следующего символа из печатаемого символа в другое значение, обычно путем установки бита 5 в ноль. Это удобно, потому что некоторые носители (например, листы бумаги, изготовленные на пишущих машинках) могут передавать только печатные символы. Однако в системах MS-DOS с файлами, открытыми в текстовом режиме, «конец текста» или «конец файла» помечается этим символом Ctrl-Z вместо Ctrl-C или Ctrl-D, которые распространены в других операционных системах.

Символ отмены (CAN ) сигнализировал, что предыдущий элемент должен быть отброшен. Отрицательный символ подтверждения (NAK ) - это определенный флаг, как правило, для того, чтобы отметить, что прием был проблемой, и, часто, что текущий элемент должен быть отправлен снова. Символ подтверждения (ACK ) обычно используется как флаг, указывающий на отсутствие проблем с текущим элементом.

Когда среда передачи является полудуплексной (то есть она может передавать одновременно только в одном направлении), обычно есть главная станция, которая может передавать в любое время, и одна или несколько подчиненных станций, которые передают когда у них есть разрешение. Знак запроса (ENQ ) обычно используется главной станцией, чтобы попросить подчиненную станцию ​​отправить свое следующее сообщение. Подчиненная станция указывает, что она завершила свою передачу, отправив символ конца передачи (EOT ).

Коды управления устройством (от DC1 до DC4) изначально были общими, чтобы при необходимости реализовываться каждым устройством. Однако универсальная потребность в передаче данных состоит в том, чтобы запросить отправителя прекратить передачу, когда получатель временно не может принять больше данных. Digital Equipment Corporation изобрела условное обозначение, которое использовало 19 (символ 3 управления устройством (DC3 ), также известный как control-S или XOFF ) на «S». "верхняя передача и 17 (символ управления устройством 1 (DC1 ), также известный как control-Q или XON ), чтобы начать передачу. Он стал настолько широко используемым, что большинство не понимает, что он не является частью официального ASCII. Однако эта технология позволяет избежать дополнительных проводов в кабеле данных, предназначенных только для управления передачей, что экономит деньги. Однако необходимо использовать разумный протокол для использования таких сигналов управления потоком передачи, чтобы избежать потенциальных состояний взаимоблокировки.

Управляющий символ канала данных (DLE ) был предназначен для того, чтобы сигнализировать другому концу канала данных, что следующий символ является управляющим символом, таким как STX или ETX. Например, пакет может быть структурирован следующим образом (DLE ) (DLE ) .

Прочие коды

Код 7 (BEL ) предназначен для подачи звукового сигнала в принимающий терминал.

Многие из управляющих символов ASCII были разработаны для устройств того времени, которые сегодня нечасто встречаются. Например, код 22, «синхронный режим ожидания» (SYN ), изначально был отправлен синхронными модемами (которые должны отправлять данные постоянно), когда фактических данных для отправки не было (современные системы обычно используют стартовый бит для объявления начала передаваемого слова - это особенность асинхронной связи. Синхронная связь ссылки чаще встречались с мэйнфреймами, где они обычно запускались по корпоративным арендованным линиям для подключения мэйнфрейма к другому мэйнфрейму или, возможно, миникомпьютеру.)

Код 0 (кодовое имя ASCII NUL ) это особый случай. На бумажной ленте это тот случай, когда нет отверстий. Это удобно рассматривать как символ заливки с нет смысла иначе. Поскольку позиция символа NUL не имеет пробитых отверстий, его можно заменить любым другим символом позже, поэтому он обычно использовался для резервирования места либо для исправления ошибок, либо для вставки информации, которая будет доступна позже. или в другом месте. В вычислениях он часто используется для заполнения в записях фиксированной длины и, как правило, для обозначения конца строки.

Код 127 (DEL, a.k.a. «rubout») также является частным случаем. Его 7-битный код - это все биты в двоичном формате, который, по сути, стирает символьную ячейку на бумажной ленте при перфорации. Бумажная лента была обычным носителем информации, когда был разработан ASCII, с историей вычислений, восходящей к оборудованию для взлома кода Второй мировой войны в Biuro Szyfrów. Бумажная лента устарела в 1970-х, поэтому этот умный аспект ASCII после этого редко находил применение. Некоторые системы (например, оригинальные Apple) преобразовали его в backspace. Но поскольку его код находится в диапазоне, занимаемом другими печатаемыми символами, и поскольку у него не было официального назначенного глифа, многие поставщики компьютерного оборудования использовали его в качестве дополнительного печатаемого символа (часто полностью черный символ "ящика", полезный для стирания текста путем наложения наложения чернилами).

Не стираемые программируемые ПЗУ обычно реализуются как массивы плавких элементов, каждый из которых представляет бит , который можно переключать только в одну сторону, обычно с единицы на ноль.. В таких PROM символы DEL и NUL могут использоваться так же, как они использовались на перфоленте: один для резервирования бессмысленных байтов заполнения, которые могут быть записаны позже, а другой для преобразования записанных байтов в бессмысленные байты заполнения. Для PROM, которые переключают единицу на ноль, роли NUL и DEL меняются местами; кроме того, DEL будет работать только с 7-битными символами, которые сегодня редко используются; для 8-битного содержимого код символа 255, обычно определяемый как неразрывный пробел, может использоваться вместо DEL.

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

См. Также

Примечания и ссылки

Внешние ссылки

Найдите Приложение: Управляющие символы в Wiktionary, бесплатном словаре.
Найдите Управляющий символ или Управляющий код в Wiktionary, бесплатном словаре.
  • ISO IR 1 C0 Набор из ISO 646 (PDF)
Последняя правка сделана 2021-05-15 11:06:52
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте