Caractère d'échappement - Escape character

En informatique et télécommunication , un caractère d'échappement est un caractère qui invoque une interprétation alternative sur les caractères suivants dans une séquence de caractères. Un caractère d'échappement est un cas particulier de métacaractères . Généralement, le jugement de savoir si quelque chose est un caractère d'échappement ou non dépend du contexte.

Dans le domaine des télécommunications , les caractères d'échappement sont utilisés pour indiquer que les caractères suivants sont codés différemment. Ceci est utilisé pour modifier les caractères de contrôle qui seraient autrement remarqués et traités par le matériel de télécommunication sous-jacent. Dans ce contexte, l'utilisation de caractères d'échappement est souvent appelée guillemets .

Définition

Un caractère d'échappement peut ne pas avoir sa propre signification, donc toutes les séquences d'échappement sont composées de deux caractères ou plus.

Les caractères d'échappement font partie de la syntaxe de nombreux langages de programmation, formats de données et protocoles de communication. Pour un alphabet donné, le but d'un caractère d'échappement est de démarrer des séquences de caractères (appelées séquences d'échappement ), qui doivent être interprétées différemment des mêmes caractères apparaissant sans le caractère d'échappement préfixé.

Les fonctions des séquences d'échappement incluent :

  • Pour coder une entité syntaxique, telle que des commandes de périphérique ou des données spéciales, qui ne peuvent pas être directement représentées par l'alphabet.
  • Pour représenter des caractères, appelés guillemets de caractères , qui ne peuvent pas être saisis dans le contexte actuel, ou qui auraient une interprétation indésirable. Dans ce cas, une séquence d'échappement est un digramme composé d'un caractère d'échappement lui-même et d'un caractère « entre guillemets ».

Caractère de contrôle

Généralement, un caractère d'échappement n'est pas un cas particulier de caractères de contrôle (de périphérique) , ni vice versa. Si nous définissons les caractères de contrôle comme non graphiques ou comme ayant une signification particulière pour un périphérique de sortie (par exemple, une imprimante ou un terminal texte ), alors tout caractère d'échappement pour ce périphérique est un caractère de contrôle. Mais les caractères d'échappement utilisés dans la programmation (comme la barre oblique inverse , "\") sont graphiques et ne sont donc pas des caractères de contrôle. Inversement, la plupart (mais pas tous) des "caractères de contrôle" ASCII ont une fonction de contrôle de manière isolée, ce ne sont donc pas des caractères d'échappement.

Dans de nombreux langages de programmation, un caractère d'échappement forme également des séquences d'échappement appelées caractères de contrôle. Par exemple, le saut de ligne a une séquence d'échappement de \n.

Exemples

JavaScript

JavaScript utilise la \(barre oblique inverse) comme caractère d'échappement pour :

  • \' simple citation
  • \" double citation
  • \\ barre oblique inverse
  • \n nouvelle ligne
  • \r retour chariot
  • \t languette
  • \b retour arrière
  • \f flux de formulaire
  • \vonglet vertical ( Internet Explorer 9 et les versions antérieures sont traités '\vcomme 'vau lieu d'un onglet vertical ( '\x0B). Si la compatibilité entre navigateurs est un problème, utilisez à la \x0Bplace de \v.)
  • \0 caractère nul (U+0000 NULL) (uniquement si le caractère suivant n'est pas un chiffre décimal, sinon c'est une séquence d'échappement octale)
  • \xFF caractère représenté par l'octet hexadécimal "FF"

Notez que les échappements \vet \0ne sont pas autorisés dans les chaînes JSON.

caractère d'échappement ASCII

Le caractère "d'échappement" ASCII ( octal : \033, hexadécimal : \x1B, ou ^[, ou, en décimal, 27) est utilisé dans de nombreux périphériques de sortie pour démarrer une série de caractères appelée séquence de contrôle ou séquence d'échappement. En règle générale, le caractère d'échappement était envoyé en premier dans une telle séquence pour alerter l'appareil que les caractères suivants devaient être interprétés comme une séquence de contrôle plutôt que comme des caractères simples, puis un ou plusieurs caractères suivraient pour spécifier une action détaillée, après quoi le l'appareil reviendrait à interpréter les caractères normalement. Par exemple, la séquence de ^[, suivie des caractères imprimables [2;10H, amènerait un terminal DEC VT102 à déplacer son curseur vers la 10e cellule de la 2e ligne de l'écran. Cela a ensuite été développé pour les codes d'échappement ANSI couverts par la norme ANSI X3.64. Le caractère d'échappement démarre également chaque séquence de commandes dans le langage de commande d'imprimante Hewlett Packard .

Une première référence au terme « caractère d'échappement » se trouve dans les publications techniques IBM de Bob Bemer , qui est crédité d'avoir inventé ce mécanisme au cours de son travail sur le jeu de caractères ASCII .

La touche Échap se trouve généralement sur les claviers PC standard. Cependant, il est généralement absent des claviers pour PDA et autres appareils non conçus principalement pour les communications ASCII. La série DEC VT220 était l'un des rares claviers populaires à ne pas avoir de touche Esc dédiée, au lieu d'utiliser l'une des touches situées au-dessus du clavier principal. Dans les interfaces utilisateur des années 1970-1980, il n'était pas rare d'utiliser cette clé comme caractère d'échappement, mais dans les ordinateurs de bureau modernes, cette utilisation est abandonnée. Parfois, la clé était identifiée avec AltMode (pour le mode alternatif). Même sans touche dédiée, le code du caractère d'échappement peut être généré en tapant [tout en maintenant enfoncée la touche Ctrl.

Programmation et formats de données

De nombreux langages de programmation modernes spécifient le caractère guillemet ( ") comme délimiteur pour un littéral de chaîne . Le caractère d'échappement de la barre oblique inverse ( \) fournit généralement deux manières d'inclure des guillemets doubles à l'intérieur d'un littéral de chaîne, soit en modifiant la signification du caractère entre guillemets incorporés dans la chaîne ( \"devient "), soit en modifiant la signification d'une séquence de caractères comprenant la valeur hexadécimale d'un guillemet double ( \x22devient ").

C , C++ , Java et Ruby autorisent tous exactement les deux mêmes styles d'échappement de barre oblique inverse. Le langage PostScript et Microsoft Rich Text Format utilisent également des échappements antislash. L' encodage imprimable entre guillemets utilise le signe égal comme caractère d'échappement.

L'URL et l' URI utilisent % - s'échappe pour citer des caractères avec une signification spéciale, comme pour les caractères non ASCII. Le caractère esperluette ( &) peut être considéré comme un caractère d' échappement dans SGML et les formats dérivés tels que HTML et XML .

Certains langages de programmation fournissent également d'autres moyens de représenter des caractères spéciaux dans des littéraux, sans nécessiter de caractère d'échappement (voir par exemple delimiter collision ).

Protocoles de communication

Le protocole point à point (PPP) utilise l' 0x7D octet ( \175, ou ASCII: }) comme caractère d'échappement. L'octet suivant immédiatement doit être XORed par 0x20avant d' être transmis à un protocole de niveau supérieur. Ceci est appliqué à la fois à 0x7Dlui-même et au caractère de contrôle 0x7E(qui est utilisé dans PPP pour marquer le début et la fin d'une trame) lorsque ces octets doivent être transmis par un protocole de niveau supérieur encapsulé par PPP, ainsi que d'autres octets négociés lorsque le le lien est établi. C'est-à-dire que lorsqu'un protocole de niveau supérieur souhaite transmettre 0x7D, il est transmis en tant que séquence 0x7D 0x5D, et 0x7Eest transmis en tant que 0x7D 0x5E.

Coquille Bourne

Dans Bourne shell (sh), les caractères astérisque ( *) et point d' interrogation ( ?) sont des caractères génériques développés via globbing . Sans caractère d'échappement précédent, an *s'étendra aux noms de tous les fichiers du répertoire de travail qui ne commencent pas par un point si et seulement s'il existe de tels fichiers, sinon *reste non développé. Ainsi, pour faire référence à un fichier littéralement appelé "*", il faut dire au shell de ne pas l'interpréter de cette manière, en le faisant précéder d'une barre oblique inverse ( \). Cela modifie l'interprétation de l'astérisque ( *). Comparer:

 
rm *    # delete all files in the current directory

rm \*   # delete the file named *

Invite de commandes Windows

L' interpréteur de ligne de commande Windows utilise un caret ( ^) pour échapper les caractères réservés qui ont des significations spéciales (en particulier : &, |, (, ), <, >, ^). L' interpréteur de ligne de commande DOS , bien qu'il ait une syntaxe similaire, ne le prend pas en charge.

Par exemple, sur l'invite de commande Windows, cela entraînera une erreur de syntaxe.

echo <hello world>

alors que cela produira la chaîne : <hello world>

echo ^<hello world^>

Windows PowerShell

Sous Windows , la barre oblique inverse est utilisée comme séparateur de chemin ; par conséquent, il ne peut généralement pas être utilisé comme caractère d'échappement. PowerShell utilise le backtick ( ` ) à la place.

Par exemple, la commande suivante :

echo "`tFirst line`nNew line"

Sortira :

        First line
New line

Les autres

  • Quoted-printable , qui encode les données 8 bits en données 7 bits de longueurs de ligne limitées, utilise le signe égal ( =) comme caractère d'échappement.

Voir également

Les références

  1. ^ "Séquences d'échappement de caractères JavaScript · Mathias Bynens" . Mathiasbynens.be . Récupéré le 30/06/2014 .
  2. ^ "Caractères spéciaux (JavaScript)" . msdn.microsoft.com. 2014-06-20 . Récupéré le 30/06/2014 .
  3. ^ Bemer, Bob. "Comment Bob Bemer a inventé la séquence et la clé ESCAPE" . www.bobbemer.com . Consulté le 22 mars 2018 .
  4. ^ Tim Hill (1998). "Le shell de commande Windows NT" . Éditions techniques MacMillan . Récupéré le 13/01/2010 .
  5. ^ "about_Escape_Characters" . Msdn.microsoft.com. 2014-05-08. Archivé de l'original le 2016-11-25 . Récupéré le 2016-11-24 .

Liens externes

Domaine public Cet article incorpore  du matériel du domaine public du document de la General Services Administration : "Federal Standard 1037C" .