Ce que fait cet outil
Votre texte devient un littéral de chaîne JSON : guillemets englobants, et chaque caractère qui ne peut pas figurer brut remplacé par son échappement.
"devient\", une barre oblique inverse devient\\;- un saut de ligne devient
\n, une tabulation\t, un retour chariot\r; - les autres caractères de contrôle deviennent
\u00XX.
é et 😀 restent tels quels. JSON est un format Unicode, et une chaîne lisible vaut mieux qu’un mur d’échappements.
Deux caractères que les encodeurs ordinaires laissent bruts
U+2028 (séparateur de ligne) et U+2029 (séparateur de paragraphe) ressortent en \u2028 et \u2029. Un encodeur JSON standard les laisse littéraux.
Les deux écritures sont du JSON valide. L’échappée est plus sûre, pour une raison historique toujours active : en JavaScript avant ES2019, ces deux caractères étaient des terminateurs de ligne, si bien qu’un littéral de chaîne qui en contenait un brut était une erreur de syntaxe. Tout ce qui prend du JSON et l’évalue comme du JavaScript — un vieil eval, un point d’entrée JSONP, un empaqueteur qui incorpore un fichier de données — tombe dessus. L’échappement coûte trois caractères et supprime toute la classe de pannes.
Un demi-substitut isolé ne produit pas une sortie cassée
Un texte peut contenir la moitié d’une paire de substitution : une chaîne coupée au mauvais indice, un champ tronqué sorti d’une base. La sortie l’échappe en \ud800 plutôt que de l’émettre brut.
C’est important parce qu’un demi-substitut brut ne peut tout simplement pas être encodé en UTF-8. Échappé, le JSON reste valide, reste de l’UTF-8, et le caractère abîmé est visible dans la sortie au lieu de corrompre le fichier qui la porte.
Ce qui n’est pas échappé
La barre oblique. \/ est du JSON légal, et certains encodeurs l’émettent pour que </script> n’apparaisse jamais dans la sortie, mais ce n’est pas exigé et cela rend le résultat moins lisible.
Si vous incorporez le résultat dans une page HTML, traitez </script> au niveau HTML : un analyseur HTML ferme l’élément à cette séquence où qu’elle apparaisse, et aucun échappement JSON n’y change rien.
Confidentiel par conception
Tout s’exécute localement dans votre navigateur en JavaScript. Vos données ne sont jamais envoyées sur un serveur, ce qui rend l’outil sûr pour des contenus sensibles, et il fonctionne hors ligne.