Escape последовательность

редактировать
Комбинации символов со скрытым значением

Управляющая последовательность - это комбинация символов который имеет значение, отличное от содержащихся в нем буквальных символов; он отмечен одним или несколькими предшествующими (и, возможно, завершающими) символами.

Содержание

  • 1 Примеры
  • 2 Управляющие последовательности
  • 3 Клавиатура
  • 4 Управление модемом
  • 5 Сравнение с управляющими символами
  • 6 Терминалы видеоданных ASCII
    • 6.1 Использование в DOS и Windows
    • 6.2 Использование в Linux и Unix отображает
  • 7 Экранирование кавычек
    • 7.1 Обзор
    • 7.2 Подробно
    • 7.3 Примеры
  • 8 См. Также
  • 9 Ссылки

Примеры

  • В языках C (и подобных) escape-последовательность представляет собой последовательность из 2 или более символов, начинающихся с обратной косой черты. (\).
    • В Java обратная косая черта, за которой следует «новая строка», является продолжением, а не escape-последовательностью.
    • Для представления символа обратной косой черты используйте два из них.
  • Для устройств, которые отвечают на escape-последовательности ANSI, комбинация из 3 или более символов, начинающихся с «escape-символа» ASCII (27 десятичных знаков / 1Bh) и символа левой квадратной скобки «[» ( 5Bh).

Управляющие последовательности

При указании этой серии символов s используется для изменения состояния компьютеров и подключенных к ним периферийных устройств, а не для отображения или печати как обычных данных байтов, они также известны как управляющие последовательности, что отражает их использование в элемент управления устройством, начиная с Инициатора управляющей последовательности - первоначально «escape символ «Код ASCII - символ 27 (десятичный) - часто пишется« Esc »на клавишах.

. С появлением терминалов ANSI большинство escape-последовательностей начинались с двух символов« ESC », затем« [»или специально выделенного CSI символ с кодом 155 (десятичный).

Не во всех управляющих последовательностях используется escape-символ; например:

  • управляющие последовательности модема, используемые AT / Hayes-совместимыми модемами, и
  • Data General управляющие последовательности терминала, но они часто все еще назывались escape-последовательностями, и очень распространенными использование «экранирующих» специальных символов в языках программирования и параметрах командной строки сегодня часто используют символ «обратной косой черты» для начала последовательности.

escape-последовательности в коммуникациях обычно используются, когда компьютер и периферийное устройство имеют только один проходной канал. который отправляет информацию туда и обратно (так что escape-последовательности являются примером внутриполосной сигнализации ). Они были обычным явлением, когда большинство немых терминалов использовали ASCII с 7 битами данных для связи, а иногда использовались для переключения на другой набор символов для "чужих" или графических символов, которые в противном случае был ограничен 128 кодами, доступными в 7 битах данных. Даже относительно «тупые» терминалы реагировали на некоторые escape-последовательности, в том числе оригинальные механические принтеры Teletype (на которых были основаны «стеклянные телетайпы» или дисплеи) реагировали на символы 27 и 31, чтобы переключаться между режимами букв и цифр.

Клавиатура

Управляющий символ обычно назначается клавише Esc на компьютерной клавиатуре и может быть отправлен другими способами, кроме как как часть escape-последовательности. Например, клавишу Esc можно использовать в качестве символа ввода в редакторах, таких как vi, или для резервного копирования одного уровня в меню в некоторых приложениях. Терминалы Hewlett Packard HP 2640 имели кнопку для режима «функций отображения», который отображал графику для всех управляющих символов, включая Esc, для облегчения отладки приложений.

Если предполагается, что клавиша Esc и другие клавиши, отправляющие escape-последовательности, имеют значение для приложения, возникает неоднозначность, если используется символьный терминал . Когда приложение получает escape-символ ASCII, неясно, является ли этот символ результатом нажатия пользователем клавиши Esc или начальным символом escape-последовательности (например, полученным от стрелки нажатие клавиши). Традиционный метод разрешения неоднозначности состоит в том, чтобы наблюдать, следует ли другой символ быстро за escape-символом. В противном случае предполагается, что он не является частью escape-последовательности. Эта эвристика может дать сбой при некоторых обстоятельствах, особенно без высоких современных скоростей связи.

Escape-последовательности относятся как минимум к 1874 г. код Бодо.

Управление модемом

Например, набор команд Hayes определяет одну escape-последовательность, +++. (Чтобы интерпретировать +++, который может быть частью данных, как escape-последовательность, отправитель прекращает связь на одну секунду до и после +++). Когда модем обнаруживает это в потоке данных, он переключается из нормального режима работы, который просто отправляет любые символы на телефон, в командный режим, в котором следующие данные считаются частью командного языка. Вы можете вернуться в онлайн-режим, отправив команду O.

Набор команд Hayes - модальный, переключение из командного режима в онлайн-режим. Это не подходит в том случае, если команды и данные будут быстро переключаться вперед и назад. Примером немодального языка управления управляющими последовательностями является VT100, в котором использовалась серия команд с префиксом Control Sequence Introducer.

Сравнение с управляющими символами

A управляющий символ - это символ, который изолированно выполняет некоторую управляющую функцию, такую ​​как возврат каретки (CR). Escape-последовательности, напротив, состоят из одного или нескольких escape-символов, которые изменяют интерпретацию последующих символов.

Терминалы видеоданных ASCII

Терминал VT52 использовал простые команды орграфа, такие как escape-A: изолированно "A" просто означало букву «A», но как часть escape-последовательности «escape-A», он имел другое значение. VT52 также поддерживал параметры: это был непростой язык управления, закодированный как подстановка.

В более позднем терминале VT100 реализован более сложный стандарт управляющих последовательностей ANSI (теперь ECMA-48) для таких функций, как управление перемещением курсора, набор символов и улучшения отображения. Серия Hewlett Packard HP 2640 имела, пожалуй, самые сложные escape-последовательности для блочного и символьного режимов, программных клавиш и их программных меток, графических векторов и даже для сохранения данных в файлы на магнитной ленте или диске.

Использование в DOS и Windows

Утилита ANSI.SYS может использоваться для включения интерпретации управляющих последовательностей терминала ANSI (ECMA-48) в разделе DOS (с помощью $ eв команде PROMPT ) или в командных окнах в 16-битной Windows. Появление приложений с графическим интерфейсом, которые напрямую записывают данные на видеокарты, значительно сократило использование escape-последовательностей на платформах Microsoft, но их все еще можно использовать для создания интерактивных экранных интерфейсов на основе символов произвольного доступа с символьные библиотечные процедуры, такие как printf, без использования программы с графическим интерфейсом.

Использование в Linux и Unix отображает

Текстовый терминал по умолчанию, а текстовые окна (например, при использовании xterm ) отвечают на escape-последовательности ANSI.

Escape-кавычки

Обзор

Когда в кавычках / экранированных строках необходим escape-символ , в языках программирования и сценариях используются две стратегии :

  • удвоенный разделитель (например, «Он этого не делал».)
  • вторичная escape-последовательность

Примером последней является использование символа вставки (^Например, в CMD выводится «Вы можете сделать это с помощью Cut Paste». (В противном случае амперсанд имеет ограниченное использование)

echo. Это можно сделать с помощью Cut ^ Paste

Подробно

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

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

Примеры

Например, символ одинарной кавычки может быть выражен как '\' ', так как запись '' 'недопустима.

Многие современные языки программирования указывают символ двойных кавычек (") в качестве разделителя для строковый литерал. Управляющий символ обратной косой черты обычно позволяет включать двойные кавычки внутри строкового литерала, например, путем изменения значения символа двойных кавычек, встроенного в строку (\ "), или путем изменения значения последовательности символов. включая шестнадцатеричное значение символа двойной кавычки (\ x22). Обе последовательности кодируют буквальную двойную кавычку (").

В Perl или Python 2

напишите «Нэнси сказала толпе« Привет, мир! ».»;

выдает синтаксическую ошибку, тогда как:

print «Нэнси сказала \" Hello World! \ "Толпе.»; ### пример \ "

производит намеченный результат. Другая альтернатива:

print" Нэнси сказала \ x22Hello World! \ x22 толпе. "; ### пример \ x22

использует" \ x "означает, что следующие два символа являются шестнадцатеричными цифрами," 22 "является значением ASCII для двойной кавычки в шестнадцатеричном формате.

C, C ++, Java и Ruby все допускают точно такие же два стиля escape-символа обратной косой черты. Язык PostScript и Microsoft Rich Text Format также используют escape-символы обратной косой черты. В кодировке quoted-printable используется кодировка знак равенства в качестве escape-символа.

URL и URI используют процентное кодирование для заключения в кавычки символов со специальным значением, как для символов, отличных от ASCII.

Другой похожий (и частично перекрывающийся) синтаксический прием - это строппинг.

Некоторые языки программирования также предоставляют другие способы представления специальных символов в литералах, не требуя escape-символа (см., Например, столкновение разделителей ).

См. Также

Ссылки

Последняя правка сделана 2021-05-19 14:34:48
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте