# Caractère d'échappement

Un caractère d'échappement, en informatique et en télécommunications, est un caractère qui déclenche une interprétation alternative du ou des caractères qui le suivent.
Le caractère d'échappement peut :
* retirer sa valeur spéciale à un caractère. Par exemple, la combinaison \ dans un nom de fichier permet de traiter l'espace comme un caractère ordinaire et non comme un séparateur ;
* ajouter une valeur spéciale à un caractère ordinaire. Par exemple \n signifie une nouvelle ligne.
La difficulté augmente quand on veut afficher le caractère d'échappement sans qu'il ait une action particulière. Souvent, il faut l'échapper avec lui-même : \\ pour afficher \, et ainsi de suite (\\\\ pour afficher \\).
L'ensemble du caractère d'échappement et des caractères dont il modifie la signification forme une séquence d'échappement.
Les caractères d'échappement et leur signification dépendent des langages informatiques et des appareils qui les utilisent.

## Fonctionnement

Les caractères d'échappement font partie de la syntaxe de nombreux langages de programmation, formats de données et protocoles de communication. L'objectif d'un caractère d'échappement est de marquer le début d'une séquence de caractères (appelée séquence d'échappement), qui doivent être interprétés différemment des mêmes caractères qui ne seraient pas précédés du caractère d'échappement. Un caractère d'échappement ne peut pas avoir sa propre signification : si / est un caractère d'échappement, / ne peut signifier barre oblique. Pour représenter la signification propre du caractère d'échappement, habituellement, on double le caractère d'échappement : on représente / par //.

### Caractère de contrôle

En règle générale, un caractère d'échappement n'est pas un cas particulier des caractères de contrôle, ni l'inverse. Les caractères de contrôle sont non graphiques (non imprimables) et/ou ont une signification particulière pour un périphérique de sortie (par exemple, un écran ou une imprimante). Les caractères d'échappement utilisés dans les langages de programmation (tels que la barre oblique inversée) sont graphiques (imprimables), donc ne sont pas des caractères de contrôle. Inversement, la plupart des caractères de contrôle ASCII ont une fonction de contrôle de périphérique, donc ne sont pas des caractères d'échappement.
Dans de nombreux langages de programmation, des caractères d'échappement servent à former des séquences d'échappement qui sont aussi des caractères de contrôle. Par exemple, le caractère de contrôle saut de ligne peut être représenté par la séquence d'échappement \n.

## Exemples
### JavaScript

JavaScript utilise la barre oblique inversée (\) comme caractère d'échappement pour représenter$^,$ :
* l'apostrophe (représentée par \') ;
* le guillemet anglais (représenté par \") ;
* la barre oblique inversée (représentée par \\) ;
* la barre oblique (représentée par \/) ;
* la nouvelle ligne (représentée par \n) ;
* le retour chariot (représenté par \r) ;
* la tabulation horizontale (représentée par \t) ;
* le retour arrière, en anglais backspace (représenté par \b) ;
* l'alimentation papier, en anglais form feed (représentée par \f) ;
* la tabulation verticale (représentée par \v) ;
* le caractère NUL (représenté par \0).
Notez que les séquences d'échappement \v et \0 ne sont pas autorisées dans les chaînes de JSON.

### ASCII

Le caractère d'échappement du code ASCII (en octal : \033, en hexadécimal : \x1B, ou ^[, en décimal : 27) est utilisé dans de nombreux périphériques de sortie pour commencer une série de caractères appelée une séquence de contrôle ou de la séquence d'échappement. Typiquement, le caractère d'échappement est envoyé en premier dans une telle séquence pour alerter le périphérique que les caractères suivants doivent être interprétés comme une séquence d'échappement plutôt que comme des caractères normaux, puis un ou plusieurs caractères suivent pour spécifier une certaine action, après quoi le périphérique revient à l'interprétation normale des caractères. Par exemple, la séquence ^[ suivie par les caractères imprimables [2;10H, commande à un terminal DEC VT102 de déplacer son curseur à la 10e cellule de la 2e ligne de l'écran. Cette pratique a été standardisée dans les séquences d'échappement ANSI couvertes par la norme ANSI X3.64. Le caractère d'échappement commence également toutes les séquences de commandes dans le Hewlett-Packard Printer Command Language.
La première référence à l'expression caractère d'échappement se trouve dans une publication technique d'IBM signée par Robert Bemer. Apparemment, c'est lui qui a inventé ce mécanisme au cours de son travail sur le jeu de caractères ASCII.
La touche d'échappement se trouve généralement sur les claviers PC standards. Toutefois, elle est généralement absente des claviers des assistants personnels et des autres appareils qui ne sont pas conçus pour les communications ASCII. Sur les interfaces d'utilisateurs pendant les années 1970-1980, il était fréquent que cette touche soit utilisée pour le caractère d'échappement, mais cet usage a été abandonné sur les ordinateurs récents. Cependant, même sans touche dédiée, le caractère d'échappement peut être généré en tapant [ tout en appuyant sur la touche Ctrl avec les claviers anglais. Cette commande ne fonctionne cependant pas sur les claviers où le caractère [ se génère via Alt Gr. Pour les claviers français, une manipulation différente fonctionne : il faut appuyer sur la touche ^ en maintenant Ctrl.

### Programmation et format de données

De nombreux langages de programmation modernes utilisent les guillemets anglais (") comme un délimiteur pour une chaîne de caractères. Le caractère d'échappement barre oblique inversée fournit généralement deux façons d'inclure des guillemets anglais dans une chaîne de caractères, soit en modifiant le sens du caractère guillemet anglais dans la chaîne (\" devient le caractère " et non le délimiteur "), soit en modifiant la signification d'une séquence de caractères égale à la valeur hexadécimale du guillemet anglais (\x22 devient ").
Les langages C, C++, Java, Ruby et PostScript ainsi que le Rich Text Format de Microsoft utilisent aussi la barre oblique inversée comme caractère d'échappement. De son côté, l'encodage Quoted-Printable utilise le signe égal (=).

## Histoire

Un des premiers codes de caractères contenant un caractère d'échappement est la famille de Code Baudot. A cette époque, ce type de caractère permettait de passer du mode lettres au mode chiffre et vice-versa.

## Source de la traduction

* (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Escape character » (voir la liste des auteurs).