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.

Références