🧰 UtlKit

Échappement de Chaînes en Ligne : Comment une Entrée de 25 Caractères Devient 27, 45 et 45 Caractères Après les Échappements JavaScript, HTML et URL, avec les 9 Codes JS, les 5 Caractères HTML et le Mode Percent Expliqués

Collez une chaîne de 25 caractères avec un esperand, des guillemets et des chevrons : l'outil renvoie 27 caractères après échappement JavaScript, 45 après échappement HTML et 45 après échappement URL, avec six modes et leurs inverses, le tout dans votre navigateur.

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.

Outils Associés

Questions Fréquentes

Pourquoi le mode d'échappement HTML convertit-il l'esperand avant tout autre caractère ?

Parce que les cinq références que le mode écrit, &, <, >, " et ', commencent chacune par un esperand. Dans une seule passe de gauche à droite, convertir l'esperand en premier fait que les quatre références suivantes sont écrites une fois et leur esperand interne n'est jamais balayé, de sorte que l'exemple de 25 caractères s'agrandit exactement de 20 et aboutit à 45. Tout autre ordre rééchappe les références sur le vol et la même entrée sort bien plus longue.

Mon échappement JavaScript n'a changé que les deux guillemets doubles de l'exemple de 25 caractères. Y a-t-il un problème ?

Non. L'échappement JavaScript réécrit exactement 9 des 128 codes ASCII: antislash, guillemet double, guillemet simple, saut de ligne, retour chariot, tabulation, retour arrière, saut de formulaire et NUL. L'esperand et les chevrons sont parfaitement légaux dans une chaîne JavaScript, ils passent donc sans changer et la sortie reste à 27 caractères, deux antislash de plus que l'entrée. La même entrée par l'échappement HTML aboutit à 45, parce qu'à cette destination l'esperand et les deux chevrons sont les caractères dangereux. C'est le mode qui décide de ce qui compte comme dangereux.

Le mode d'échappement URL a encodé les barres obliques et le point d'interrogation de mon adresse complète. Est-ce une erreur ?

Rien n'est faux, mais le mode est un encodeur de composant, pas un encodeur d'URL. encodeURIComponent garde 71 des 96 caractères ASCII imprimables et encode tout le reste, y compris la barre oblique, le deux-points, le point d'interrogation et le signe égal, de sorte qu'une adresse complète de 53 caractères avec chaîne de requête sort comme le composant de 75 caractères https%3A%2F%2Futlkit.com%2Ftools%2Fstring-escape%2F%3Fq%3DTom%20%26%20Jerry. Si tu veux traiter l'URL entière comme une unité avec sa structure intacte, l'outil Encodeur/Décodeur d'URL rend cette séparation explicite. Dans l'autre direction, decodeURIComponent lève une erreur devant une séquence percent malformée comme %E0, et l'outil affiche le message au lieu d'une chaîne à moitié décodée.

L'échappement suivi du dééchappement rend-il toujours la chaîne d'origine ?

Pour une entrée qui n'a jamais été échappée, oui. L'échappement JavaScript suivi du dééchappement JavaScript parcourt la même table des 128 codes en avant et en arrière et rend l'entrée sans changement, et la paire URL fait aussi le voyage, paires hexadécimales comprises. La panne vient de deux directions de plus. L'une est le double échappement: exécutez l'échappement HTML deux fois et la seconde passe échappe l'esperand à l'intérieur des références écrites par la première, de sorte que l'annulation demande deux passes de dééchappement, pas une. L'autre est de dééchapper des données qui n'ont jamais été échappées: taper un signe percent suivi de deux chiffres qui ne forment pas une séquence valide, comme un %E0 orphelin, fait lever une erreur à decodeURIComponent, et l'outil affiche le message au lieu d'une chaîne à moitié décodée.

Pourquoi l'exemple de 25 caractères aboutit à 45 aussi bien après l'échappement HTML que après l'échappement URL ?

Deux arithmétiques différentes, le même point d'arrivée. L'échappement HTML ajoute 4 à l'esperand unique, 5 à chacun des deux guillemets doubles et 3 à chacun des deux chevrons: 25 plus 20, 45. L'échappement URL transforme les quatre espaces, l'esperand, le deux-points, les deux guillemets doubles et les deux chevrons, dix caractères simples, en dix séquences percent de trois, aussi 25 plus 20, aussi 45. L'égalité est une coïncidence de cette entrée en particulier, et les deux résultats de 45 sont deux chaînes différentes: l'une est pleine de références esperand, l'autre de trios percent. Chaque destination a compté ses propres caractères dangereux, et les deux ont demandé le même total par hasard.

Articles Associés