Encoder une URL : préserver la valeur sans casser le lien
Un lien peut fonctionner jusqu’à l’ajout d’un nom contenant &, + ou une espace. Le nom n’est pas forcément invalide : certains caractères ont aussi un rôle structurel dans l’URL.
Une valeur n’est pas toute l’URL
Encodez la valeur du paramètre pour que & ne démarre pas un autre paramètre et # un fragment. Encoder une adresse complète exige plutôt de conserver ses séparateurs structurels.
Choisissez selon l’entrée : adresse entière, composant ou valeur de formulaire. Un résultat correct dans un contexte ne convient pas automatiquement à un autre.
Références: WHATWG URL Standard — Percent encoding and form encoding
Le signe + dépend du contexte
Dans les formulaires, + représente une espace et %2B un véritable signe plus. Pour un composant, l’espace devient généralement %20 et + n’est pas automatiquement interprété comme une espace.
Ne remplacez pas tous les + avant de connaître le format source. Distinguez la valeur initiale de l’utilisateur de sa représentation de transport.
Références: WHATWG URL Standard — Percent encoding and form encoding
Décoder est une étape précise, pas une boucle de réparation
Décoder 2 fois peut modifier le sens. Déterminez le nombre de couches prévu par le système producteur, plutôt que répéter jusqu’à reconnaître le texte.
Cet outil transforme la représentation ; il ne visite ni ne vérifie la destination. Un lien lisible ne prouve pas sa fiabilité, et encoder une information sensible ne la cache pas.
Exemple : une valeur avec +, espaces et &
A+B & C devient A%2BB%20%26%20C en tant que composant. L’encodage de formulaire donne A%2BB+%26+C. Chaque forme retrouve l’original avec la convention de décodage correspondante.
%252F donne %2F après un décodage, puis / après un second. Cette différence peut changer un chemin ou une valeur ; répéter n’est pas automatiquement un nettoyage sûr.