tools / escape
escape/
Échappement et annulation de l'échappement des entités HTML, de Unicode \uXXXX et des chaînes JS.
Texte brut
Échappé
Questions fréquentes
Quelle différence entre l'échappement HTML, Unicode et de chaîne JS ?
Ce sont trois notations différentes, à choisir selon la destination du texte. Les entités HTML s'écrivent & ou < et permettent d'insérer du texte dans une page web en toute sécurité ; les échappements Unicode sont des points de code comme \u4f60, courants dans le JSON et les journaux ; l'échappement de chaîne JS gère les guillemets, les antislashs et les sauts de ligne pour que le texte puisse figurer dans du code JavaScript.
Quels caractères l'échappement HTML modifie-t-il, et le texte chinois change-t-il ?
Seulement cinq caractères : & devient &, < devient <, > devient >, un guillemet double devient " et une apostrophe devient '. Le texte chinois, les espaces, les sauts de ligne et tout le reste ne bougent pas, et rien n'est transformé en formes comme 中. Pour du texte dans le corps d'un HTML ou une valeur d'attribut entre guillemets, ce sont ces cinq caractères qu'il faut échapper.
Pourquoi certains &xxx; restent-ils inchangés après l'annulation de l'échappement HTML ?
Les entités nommées que l'outil ne reconnaît pas sont conservées telles quelles, sans erreur. Un jeu intégré d'entités courantes est pris en charge (lettres latines et grecques, ponctuation, devises, flèches, symboles mathématiques, etc.) ; les noms sont sensibles à la casse et le point-virgule final est obligatoire. Pour un nom non intégré, écrivez-le sous forme d'entité numérique comme 中 ou 中 et il sera décodé. Une entité numérique dont le point de code vaut 0, dépasse 10FFFF ou tombe dans la plage des substituts devient le caractère de remplacement �.
Comment fonctionne l'échappement Unicode, et pourquoi un emoji donne-t-il deux blocs \u ?
L'échappement Unicode ne traite que les caractères non ASCII ; les lettres anglaises, chiffres et symboles restent tels quels, donc « 你好 abc » devient \u4f60\u597d abc, avec des chiffres hexadécimaux en minuscules. Les caractères hors BMP, comme les emoji, sont scindés en une paire de substitution à la manière de JavaScript, ce qui donne deux blocs comme \ud83d\ude00. À l'annulation, les écritures \uXXXX et \u{…} sont toutes deux acceptées, les paires de substitution adjacentes sont refusionnées en un seul caractère, et un \u mal formé est conservé tel quel, sans erreur.
Puis-je coller directement le résultat de l'échappement JS dans du code ?
Oui, il suffit de l'entourer de guillemets ; les simples comme les doubles fonctionnent, car les deux types sont échappés. Les antislashs, sauts de ligne et tabulations deviennent \\ \n \t, les autres caractères de contrôle s'écrivent \xHH, et le texte chinois n'est pas échappé. Les backticks et ${ ne sont pas échappés : si le texte va dans un littéral de gabarit (template literal), c'est à vous de les traiter.
Que signifie le message « Échec de l'annulation de l'échappement : Caractère N : … » ?
L'antislash à cet endroit est suivi de quelque chose de non valide. En mode chaîne JS, \x doit être suivi de deux chiffres hexadécimaux, \u de quatre (ou de 1 à 6 dans \u{…}), les échappements octaux comme \1 à \7 ne sont pas pris en charge, et un antislash isolé tout à la fin est aussi une erreur. Une cause fréquente est un chemin Windows collé : dans C:\users, le \u n'est pas un échappement valide. Les antislashs d'un chemin n'ont de toute façon jamais besoin d'être annulés.
Le résultat échappé peut-il servir de chaîne JSON ?
L'annulation fonctionne, l'échappement non. Des séquences comme \n, \", \/ et \uXXXX d'une chaîne JSON peuvent être ramenées au texte d'origine avec l'annulation en mode « Chaîne JS ». Mais le sens échappement écrit une apostrophe sous la forme \' et les caractères de contrôle sous la forme \xHH, ce que JSON n'accepte ni l'un ni l'autre ; pour produire une chaîne JSON valide, utilisez JSON.stringify.
Mon texte est-il envoyé quelque part, et est-il sûr de coller un contenu de source inconnue ?
Rien n'est envoyé : l'échappement et son annulation se font dans votre navigateur, et il n'y a pas de limite de caractères ; au-delà d'un million de caractères, la page attend une pause de 0,5 seconde avant de recalculer. L'annulation de l'échappement HTML et JS est analysée morceau par morceau par l'outil lui-même, sans passer par le DOM de la page ni par eval : coller par exemple <script> donne simplement du texte, qui n'est jamais exécuté.