Encoder une requête de recherche
hello world & more
hello%20world%20%26%20more
Les espaces deviennent %20, et le & devient %26 pour qu'il ne soit pas confondu avec un séparateur de paramètres.
Encodez et décodez les composants d'URL en toute sécurité.
Dernière mise à jour
Un encodeur d'URL (aussi appelé encodeur en pourcentage ou encodeur d'URI) remplace les caractères réservés ou non autorisés dans une URL par un % suivi de deux chiffres hexadécimaux. On y a recours quand on construit des query strings, qu'on échappe des segments de chemin, qu'on partage des URL contenant des espaces ou des caractères non-ASCII, ou qu'on debugge des redirections.
Les URL n'acceptent qu'un petit jeu de caractères ASCII. Tout ce qui sort de ce jeu — espaces, accents, emojis, ou symboles réservés comme ?, #, &, = quand ils servent de données — doit être encodé en pourcentage pour arriver intact du navigateur jusqu'au serveur.
JavaScript fournit deux fonctions d'encodage : encodeURI (qui préserve la structure de l'URL : /, ?, #, &) et encodeURIComponent (qui encode tous les caractères réservés). Utilisez encodeURIComponent pour les *valeurs* que vous insérez dans une query string, et encodeURI pour des *URL entières* que vous voulez garder fonctionnelles.
% suivi de deux chiffres hexadécimaux — par exemple, un espace devient %20.: / ? # & = +) ont une signification dans la structure d'une URL. Ils doivent être encodés quand ils servent de données et non de séparateurs.Cliquez sur Encoder si vous avez du texte brut à rendre compatible avec une URL. Cliquez sur Décoder si vous avez une chaîne encodée en % et que vous voulez retrouver le texte d'origine.
Sélectionnez encodeURIComponent (encode tous les caractères réservés) pour les valeurs d'une query string ; sélectionnez encodeURI (préserve la structure) pour une URL complète.
Collez le texte brut ou l'URL encodée. Le multi-ligne fonctionne pour décoder en lot.
Récupérez la valeur encodée ou décodée. La conversion se fait localement dans votre navigateur, donc les éventuels secrets contenus dans vos URL ne quittent pas votre machine.
Les caractères que vous croiserez le plus souvent sous leur forme encodée. La sémantique des caractères réservés vient de la RFC 3986.
| Caractère | Encodé | Pourquoi |
|---|---|---|
| espace | %20 | Les espaces sont interdits dans les URL |
! | %21 | Réservé par certains serveurs |
# | %23 | Marque le début d'un fragment |
$ | %24 | Caractère réservé |
& | %26 | Sépare les paramètres d'une query string |
+ | %2B | Représente l'espace dans les corps form-encoded |
/ | %2F | Séparateur de chemin |
: | %3A | Sépare le schéma de l'hôte |
= | %3D | Sépare la clé de la valeur dans une query string |
? | %3F | Marque le début de la query string |
@ | %40 | Sépare les infos utilisateur de l'hôte |
| octet UTF-8 | %C3%A9 | Chaque octet non-ASCII est encodé |
hello world & more
hello%20world%20%26%20more
Les espaces deviennent %20, et le & devient %26 pour qu'il ne soit pas confondu avec un séparateur de paramètres.
café
caf%C3%A9
é correspond à la séquence d'octets UTF-8 0xC3 0xA9, donc la forme encodée comporte *deux* groupes %XX pour ce seul caractère.
https://example.com/path?q=hello world
https://example.com/path?q=hello%20world
https%3A%2F%2Fexample.com%2Fpath%3Fq%3Dhello%20world
encodeURI conserve la structure de l'URL (slashs, ?, =). encodeURIComponent encode tous les caractères réservés — à utiliser sur les valeurs qu'on injecte dans une query string, jamais sur une URL entière.
encodeURI pour des valeurs de query string — les & et = passent à travers et cassent le parsing des paramètres.%2520 à la place de %20 est le signe classique d'un bug de double encodage.+ signifie « espace » dans les corps application/x-www-form-urlencoded, mais reste un + littéral dans le chemin ou la query string d'une URL.% suivi de deux chiffres hexadécimaux.encodeURI préserve les caractères de structure d'une URL (/, ?, #, &, =, +). encodeURIComponent les encode tous, ce qui est exactement ce qu'on veut pour les *valeurs* placées à l'intérieur d'une URL — valeurs de paramètres, segments de chemin, fragments. Voir les références MDN sur encodeURI et encodeURIComponent.%20 ?%20, la forme percent-encoded du caractère espace ASCII (0x20 en hexadécimal).decodeURI, decodeURIComponent ou n'importe quel décodeur d'URL rétablit le percent-encoding vers les caractères d'origine.