Escape character


In computing and telecommunication, an escape character is a character that 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 the context.

Definition

An escape character may not have its own meaning, so all escape sequences are of two or more characters.
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.
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 the 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 they are not escape characters.
In many programming languages, an escape character also forms some escape sequences which are referred to as control characters. For example, line break has an escape sequence of.

Examples

JavaScript

JavaScript uses the as an escape character for:
Note that the and 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, 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.
An early reference to the term "escape character" is found in Bob Bemer's IBM technical publications, who is credited with inventing 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 of 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.

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 octet (, or ASCII:

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 do not start with a period if and only if 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.

echo

whereas this will output the string:

echo ^

Windows PowerShell

In Windows, the backslash is used as a path separator; therefore, it generally cannot be used as an escape character. PowerShell uses backtick instead.
For example, the following command:

echo "`tFirst line`nNew line"

Will output:

First line
New line

Others