In computing and telecommunication, an escape character is a character which invokes an
alternative interpretation on subsequent characters in a character sequence. An escape character
is a particular case of metacharacters. Generally, the judgement of whether something is an escape
character or not depends on context.
Definition Escape characters are part of the syntax for
many programming languages, data formats and communication protocols. For a given alphabet
an escape character's purpose is to start character sequences which have to be interpreted
differently from the same characters occurring without the prefixed escape character. An
escape character may not have its own meaning, so all escape sequences are of two or more
characters. There are usually two functions of escape
sequences. The first is to encode a syntactic entity, such as device commands or special
data which cannot be directly represented by the alphabet. The second use, referred
to as character quoting, is to represent characters which cannot be typed in current context,
or would have an undesired interpretation. In the latter case an escape sequence is a
digraph consisting of an escape character itself and a "quoted" character.
Control character Generally, an escape character is not a particular
case of control characters, nor vice versa. If we define control characters as non-graphic,
or as having a special meaning for an output device then any escape character for this
device is a control one. But escape characters used in programming are graphic, hence are
not control characters. Conversely most of the ASCII "control characters" have some control
function in isolation, therefore are not escape characters.
In many programming languages, an escape character also forms some escape sequences which are
referred to control characters. For example, line break has an escape sequence of \n.
Examples JavaScript
JavaScript uses the \ as an escape characters for:
\' single quote \" double quote
\\ backslash \/ forwardslash
\n new line \r carriage return
\t tab \b backspace
\f form feed \v vertical tab. If cross-browser compatibility
is a concern, use \x0B instead of \v.) \0 null character
Note that the \v and \0 escapes are not allowed in JSON strings.
ASCII escape character The ASCII "escape" character is used in many
output devices to start a series of characters called a control sequence or escape sequence.
Typically, the escape character was sent first in such a sequence to alert the device that
the following characters were to be interpreted as a control sequence rather than as plain
characters, then one or more characters would follow to specify some detailed action, after
which the device would go back to interpreting characters normally. For example, the sequence
of ^[, followed by the printable characters [2;10H, would cause a DEC VT102 terminal to
move its cursor to the 10th cell of the 2nd line of the screen. This was later developed
to ANSI escape codes covered by the ANSI X3.64 standard. The escape character also starts
each command sequence in the Hewlett Packard Printer Command Language.
Early reference to the term "escape character" is found in Bob Bemer's IBM technical publications.
Apparently, it is he who invented this mechanism, during his work on the ASCII character set.
The Escape key is usually found on standard PC keyboards. However it is commonly absent
from keyboards for PDAs and other devices not designed primarily for ASCII communications.
The DEC VT220 series was one of the few popular keyboards that did not have a dedicated Esc
key, instead using one of the keys above the main keypad. In user interfaces of the 1970s–1980s
it was not uncommon to use this key as an escape character, but in modern desktop computers
such use is dropped. Sometimes the key was identified with AltMode. Even with no dedicated
key, the escape character code could be generated by typing '[' while simultaneously holding
down the Control key, 'Ctrl'. Programming and data formats
Many modern programming languages specify the doublequote character as a delimiter for
a string literal. The backslash escape character typically provides two ways to include doublequotes
inside a string literal, either by modifying the meaning of the doublequote character embedded
in the string, or by modifying the meaning of a sequence of characters including the
hexadecimal value of a doublequote character. C, C++, Java, and Ruby all allow exactly the
same two backslash escape styles. The PostScript language and Microsoft Rich Text Format also
use backslash escapes. The quoted-printable encoding uses the equals sign as an escape
character. URL and URI use %-escapes to quote characters
with a special meaning, as for non-ASCII characters. The ampersand character may be considered
as an escape character in SGML and derived formats such as HTML and XML.
Some programming languages also provide other ways to represent special characters in literals,
without requiring an escape character. Communication protocols
The Point-to-Point Protocol uses the 0x7D octet as an escape character. The octet immediately
following should be XORed by 0x20 before being passed to a higher level protocol. This is
applied to both 0x7D itself and the control character 0x7E when those octets need to be
transmitted by a higher level protocol encapsulated by PPP, as well as other octets negotiated
when the link is established. That is, when a higher level protocol wishes to transmit
0x7D, it is transmitted as the sequence 0x7D 0x5D, and 0x7E is transmitted as 0x7D 0x5E.
Bourne shell In Bourne shell, the asterisk and question
mark characters are wildcard characters expanded via globbing. Without a preceding escape character,
an * will expand to the names of all files in the working directory that don't start
with a period iff there are such files, otherwise * remains unexpanded. So to refer to a file
literally called "*", the shell must be told not to interpret it in this way, by preceding
it with a backslash. This modifies the interpretation of the asterisk. Compare:
Windows Command Prompt The Windows command-line interpreter uses
a caret character to escape reserved characters that have special meanings < > ^). The DOS
command-line interpreter, though it supports similar syntax, does not support this.
For example, on the Windows Command Prompt, this will result in a syntax error.
whereas this will output the string:
Others Quoted-printable, which encodes 8-bit data
into 7-bit data of limited line lengths, uses the equals sign "=" as an escape character.
See also Leaning toothpick syndrome
Stropping – in some conventions a leading character functions as an escape character
Not to be confused with: Escape sequences used for communication between
devices Esc key on a keyboard
References ^ "JavaScript character escape sequences Âˇ
Mathias Bynens". Mathiasbynens.be. Retrieved 2014-06-30.
^ "Special Characters". Msdn.microsoft.com. 2014-06-20. Retrieved 2014-06-30.
^ Tim Hill. "The Windows NT Command Shell". MacMillan Technical Publishing. Retrieved
2010-01-13. External links
Escape characters in 9 languages That Powerful ESCAPE Character -- Key and
Sequences – Bob Bemer This article incorporates public domain
material from the General Services Administration document "Federal Standard 1037C".