Comment ça marche
L'encodage d'URL (percent-encoding) remplace les caractères qui ne peuvent pas apparaître littéralement dans une adresse par des séquences %XX portant leur valeur d'octet. Par exemple, l'espace devient %20.
La portée « Composant » échappe aussi les caractères réservés (= & / ? #) : utilisez-la pour la valeur d'un paramètre. « URL complète » préserve la structure de l'adresse : utilisez-la pour une URL entière.
Dans les formulaires HTML, l'espace est encodé en + (application/x-www-form-urlencoded) ; dans tous les autres cas, on utilise %20 selon la norme RFC 3986.
Exemples
hola mundo & máshola%20mundo%20%26%20m%C3%A1sLe « & » est échappé (%26) pour ne pas être confondu avec un séparateur de paramètres ; « á » est encodé en UTF-8 (%C3%A1).a=1&b=2a%3D1%26b%3D2https://sitio.com/á b?x=1 2URL completa: https://sitio.com/%C3%A1%20b?x=1%202En mode « URL complète », ://, / et ? sont préservés ; seul ce qui casserait l'adresse est échappé.Cas d'usage
- Construire des paramètres de requête en toute sécurité lors de la construction manuelle d'une URL.
- Encoder des valeurs contenant &, =, des espaces ou des accents avant de les envoyer dans une requête GET.
- Décoder une URL pour lire les valeurs que porte chaque paramètre.
- Préparer des corps application/x-www-form-urlencoded pour l'envoi de formulaires.
Questions fréquentes
Quelle est la différence entre « Composant » et « URL complète » ?
« Composant » (encodeURIComponent) échappe aussi =, &, /, ?, # — c'est pour une valeur individuelle. « URL complète » (encodeURI) préserve ces caractères structurels — c'est pour une URL entière.
Quand utilise-t-on + et quand %20 pour l'espace ?
Le + ne s'applique qu'au corps des formulaires (application/x-www-form-urlencoded). Dans le reste de l'URL, la norme pour l'espace est %20.
Pourquoi « á » devient-il %C3%A1 et non un seul %XX ?
Parce qu'il est encodé en UTF-8 : les caractères non ASCII occupent plusieurs octets, et chaque octet est représenté par sa propre séquence %XX.
Encoder une URL la rend-elle sûre ?
Non. Cela la rend seulement valide au niveau de la syntaxe. Ce n'est pas du chiffrement et cela ne protège en rien le contenu.