·4 min de lecture

Échappement et déséchappement de chaînes pour Mac — JSON, HTML, URL

Intégrer un format de chaîne dans un autre implique d'échapper correctement guillemets, barres obliques et caractères spéciaux, ou de voir votre analyseur s'étouffer.

Vous devez intégrer une chaîne JSON à l'intérieur d'une autre chaîne JSON — peut-être un message de journal qui contient lui-même un payload JSON. Ou vous écrivez une commande shell qui inclut une chaîne avec des guillemets dedans. Ou vous construisez une URL qui doit transporter une autre URL en tant que paramètre de requête. Chacune de ces situations exige un échappement : convertir des caractères qui seraient sinon interprétés comme de la syntaxe en une forme traitée comme des données littérales.

Les contextes différents échappent différemment. Le JSON échappe les guillemets avec une barre oblique inverse et représente les caractères spéciaux comme les sauts de ligne sous la forme \n. L'échappement shell dépend du style de guillemetage utilisé. L'échappement d'URL encode en pourcentage les caractères réservés de manière entièrement différente des deux autres. Mélanger tout cela — appliquer un échappement JSON là où un échappement URL était nécessaire — produit un résultat qui a presque l'air correct et échoue de manière confuse.

Le problème du double échappement

L'un des bugs les plus courants dans ce domaine est le double échappement : une chaîne est échappée une fois par votre code puis à nouveau par une bibliothèque ou un framework qui suppose qu'elle est encore brute, transformant une seule barre oblique inverse en deux et corrompant silencieusement les données. Diagnostiquer cela nécessite de déséchapper étape par étape pour voir exactement où la couche supplémentaire a été introduite — fastidieux à faire à la main, surtout dans une longue chaîne.

Échapper et déséchapper plusieurs formats

Bellows inclut des outils d'échappement de chaînes couvrant les formats JSON, HTML et URL parmi ses 41 outils de développement. Collez une chaîne brute pour la voir correctement échappée pour un contexte donné, ou collez une chaîne échappée pour voir la valeur brute d'origine.

Bellows string escape and unescape tool on macOS

Intégrer des chaînes à l'intérieur de chaînes

Construire un payload JSON qui contient lui-même une chaîne JSON comme valeur de champ, ou composer un message de journal qui doit inclure en toute sécurité une saisie utilisateur arbitraire, exigent tous deux un échappement correct pour éviter de corrompre la structure externe.

Diagnostiquer des données doublement échappées

Quand une chaîne semble avoir été échappée plus de fois qu'elle ne le devrait, la déséchapper couche par couche révèle exactement où l'encodage supplémentaire a été introduit, ce qui est généralement le moyen le plus rapide de retrouver le code responsable.

Obtenez Bellows sur le Mac App Store

Article suivant

Bellows

41 developer tools in one native Mac app — JSON, JWT, Base64, hashes, and more.

Get Bellows on the Mac App Store