Pourquoi j'encode systématiquement mon JSON pour les URLs
Chaque fois que je dois passer des données structurées via une URL — filtres de recherche avancée, état d'application, configurations dynamiques — je me heurte au même problème : JSON utilise des caractères ({, }, ", :, [, ]) qui ont des significations spéciales dans les URLs ou sont tout simplement interdits. Sans encodage, le serveur reçoit des données corrompues, les query strings sont mal parsées, et l'application plante mystérieusement. Le percent-encoding transforme chaque caractère problématique en une séquence %XX sûre pour le transport URL.
Comprendre les deux types d'encodage
🌐 encodeURI() — Pour les URLs complètes
Encode les caractères non-ASCII et les espaces, mais préserve la structure URL : / : ? & = # ne sont PAS encodés. Utilisez-le quand vous avez une URL entière à rendre sûre, pas pour des valeurs de paramètres.
🔒 encodeURIComponent() — Pour les valeurs
Encode TOUT sauf les lettres, chiffres, et quelques caractères sûrs (- _ . ~). C'est le bon choix pour encoder du JSON destiné à un paramètre ?data=... car il encode aussi : / ? & =
📦 Minification préalable
Chaque espace devient %20 (3 caractères), chaque retour ligne %0A. Un JSON formaté peut tripler de taille après encodage ! Minifier d'abord supprime ces caractères inutiles, réduisant drastiquement la taille de l'URL finale.
⚠️ Piège du double encodage
Si votre JSON contient déjà des % (rare mais possible), ils seront encodés en %25. Si vous encodez deux fois par erreur, %7B devient %257B. Toujours encoder une seule fois, le plus tard possible dans la chaîne.
Comment utiliser cet outil
- Collez votre JSON — Dans l'éditeur de gauche, avec ou sans formatage
- Choisissez vos options — « Minifier avant encodage » est recommandé pour réduire la taille
- Sélectionnez le type d'encodage — « Encoder Composant » (encodeURIComponent) pour les valeurs de paramètres, « Encoder URL » (encodeURI) pour une URL complète
- Copiez le résultat — Prêt à être intégré dans votre URL
Référence des encodages JSON courants
- Espace → %20
- " (guillemet) → %22
- { → %7B et } → %7D
- [ → %5B et ] → %5D
- : → %3A (avec encodeURIComponent)
- , → %2C
- / → %2F (avec encodeURIComponent)
- ? → %3F (avec encodeURIComponent)
- & → %26 (avec encodeURIComponent)
- = → %3D (avec encodeURIComponent)
Cas d'usage concrets
J'utilise cet outil quotidiennement pour construire des URLs de partage avec état (filtres de recherche pré-remplis), passer des configurations complexes à des widgets embedés, créer des deep links pour applications mobiles, et déboguer des URLs générées par d'autres systèmes. Tout traitement se fait localement dans votre navigateur — aucune donnée n'est transmise.