Les chaînes se cassent quand elles traversent des systèmes. Un guillemet double dans une chaîne JavaScript, un esperand dans un attribut HTML, une espace dans un paramètre de requête: chaque destination a ses caractères dangereux et sa façon de les neutraliser. L'outil Échappement/Dééchappement de Chaînes convertit une chaîne collée en la forme sûre pour cette destination, et fait le chemin inverse, le tout dans le navigateur: rien n'est téléversé et rien ne quitte l'onglet. Il travaille en six modes, trois cibles dans deux directions: Escape JavaScript, Unescape JavaScript, Escape HTML, Unescape HTML, Escape URL et Unescape URL. Prenez une entrée de 25 caractères: une salutation avec un esperand, un deux-points et une phrase entre guillemets dans des chevrons. Après échappement HTML elle mesure 45 caractères, après échappement URL elle mesure aussi 45, et ces deux résultats de 45 sont deux chaînes différentes, ce qui est le point central.
Six modes : trois cibles, deux directions
Le mode JavaScript réécrit 9 des 128 codes ASCII en séquences de deux caractères: antislash, guillemet double, guillemet simple, saut de ligne, retour chariot, tabulation, retour arrière, saut de formulaire et le code NUL. Contre l'exemple de 25 caractères, seuls les deux guillemets doubles changent, la sortie garde l'esperand et les chevrons intacts et mesure 27 caractères; une chaîne avec une vraie tabulation et un vrai saut de ligne revient avec un antislash t et un antislash n littéraux à ces places. Le mode HTML convertit exactement cinq caractères: l'esperand en une référence de cinq, les deux chevrons en références de quatre, le guillemet double en une référence de six, et le guillemet simple en une référence numérique. Le mode URL est l'encodage percent. Chaque échappement a son jumeau dééchappement, et chaque conversion s'exécute au collage, sans aller-retour serveur.
L'exemple de 25 caractères, trois destinations
Écrit sans ornements: une salutation, un esperand, un deux-points et une phrase entre guillemets dans des chevrons, 25 caractères au total. L'échappement JavaScript ajoute un antislash devant chacun des deux guillemets doubles, 27 caractères. L'échappement HTML remplace l'esperand unique par sa référence de cinq, les deux guillemets doubles par celle de six et la paire de chevrons par des références de quatre: 25 plus 20, aboutit à 45. L'échappement URL encode en percent les quatre espaces, l'esperand, le deux-points, les deux guillemets doubles et les deux chevrons: dix caractères simples deviennent dix séquences de trois et la somme aboutit aussi à 45, une coïncidence de cette entrée en particulier. Trois destinations, trois réponses, et l'entrée n'est jamais modifiée sur place: l'outil écrit toujours une chaîne neuve dans le panneau de sortie.
Échappement URL: ce que l'encodage percent garde
encodeURIComponent laisse intacts 71 des 96 caractères ASCII imprimables: les 62 lettres et chiffres plus neuf symboles, le point d'exclamation, le guillemet simple, les deux parenthèses, l'astérisque, le point, le trait d'union, le tiret bas et la tilde. Tout le reste devient un signe percent plus deux chiffres hexadécimaux. C'est pourquoi c'est un encodeur de composant, pas un encodeur d'URL: exécutez-le sur une adresse complète de 53 caractères avec une chaîne de requête et les barres obliques, les deux-points, le point d'interrogation et le signe égal deviennent %2F, %3A, %3F et %3D, produisant un composant de 75 caractères, https%3A%2F%2Futlkit.com%2Ftools%2Fstring-escape%2F%3Fq%3DTom%20%26%20Jerry. Quand la question est une pièce d'une URL plutôt que l'URL entière, l'Encodeur/Décodeur d'URL sépare cette décision explicitement. Dans l'autre direction, decodeURIComponent refuse une séquence malformée comme un %E0 orphelin avec une erreur levée, et l'outil la capture et affiche le message au lieu d'une chaîne mi-décodée.
Choisir le mode selon la destination
La règle est destination d'abord. Le code que va lire un analyseur JavaScript veut l'échappement JavaScript; le texte ou la valeur d'un attribut qui va être analysé comme balisage veut l'échappement HTML; un paramètre de requête veut l'échappement URL. Les outils voisins couvrent les bords: l'Encodeur/Décodeur d'Entités HTML travaille en références nommées et numériques, de sorte qu'une espace insécable devient   et une ellipse …; l'Encodeur/Décodeur Base64 sort les charges quasi binaires du canal de texte tout à fait; et le Convertisseur Hex UTF-8 Base64 montre les mêmes octets en hexadécimal, texte UTF-8 et Base64 quand la question est ce que sont les octets, pas comment les citer.
Où les chaînes échappées touchent le reste du lot
Échapper n'arrive presque jamais seul. Quand la sortie échappée doit entrer dans un payload JSON, la coller dans le Formatteur JSON soit la parse proprement, soit pointe le caractère exact qui l'a cassée. Quand l'entrée vient d'un presse-papiers plein de caractères invisibles, le Nettoyeur d'Espaces rend visibles les tabulations et les retours avant toute décision d'échappement, de sorte qu'un antislash t dans la sortie est une tabulation que vous avez envoyée, pas une surprise.
Allers-retours et le piège du double échappement
Chaque échappement de l'outil a son inverse, qui parcourt la même table des 128 codes en sens inverse: échappement JavaScript puis dééchappement JavaScript rend la chaîne d'origine sans changement, et la paire URL fait aussi le voyage, paires hexadécimales comprises. La rue à sens unique est le double échappement. Exécutez l'échappement HTML deux fois et l'esperand à l'intérieur de la référence s'échappe lui aussi, de sorte que le résultat s'affiche comme le texte visible d'une référence plutôt que le caractère qu'elle nomme, et l'annuler demande deux passes de dééchappement, pas une. Le mode de panne n'est pas l'échappement lui-même, mais l'appliquer deux fois, ou une fois dans le mauvais mode. Et quand le problème d'une chaîne est sa structure plutôt que ses caractères, les outils d'échappement ne sont pas l'instrument juste: le guide de formatage HTML couvre le côté formatage du même document.