Langue : Français

tools / url

url/

Encodage / décodage d'URL, plus découpage d'une URL complète en ses parties et en tableau des paramètres de requête.

Entrée

Encodé

Analyser l'URL

Questions fréquentes

Quelle différence entre encodeURIComponent et encodeURI, et lequel choisir ?

Utilisez encodeURIComponent pour une valeur de paramètre ou un segment de chemin, et encodeURI pour une URL entière. Le premier convertit aussi en %XX les caractères ayant un sens particulier comme « : / ? & = # », il ne convient donc que pour un morceau d'URL ; le second les conserve, la structure de l'URL reste intacte, mais il ne touche pas aux & et = à l'intérieur d'une valeur de paramètre. Les lettres, les chiffres et - _ . ! ~ * ' ( ) ne sont encodés ni par l'un ni par l'autre.

Pourquoi un espace devient-il %20, et le + devient-il un espace au décodage ?

L'encodage écrit ici un espace sous la forme %20, pas +. Au décodage, un + dans le champ reste tel quel et ne devient pas un espace, car decodeURIComponent ne fait pas cette conversion ; seul le tableau des paramètres de requête sous « Analyser l'URL » traite + comme un espace, selon les règles des formulaires. Pour décoder un a+b issu d'un envoi de formulaire, remplacez d'abord le + par un espace à la main.

Que faire face à « n'est pas une séquence UTF-8 valide » au décodage ?

Cette suite de %XX n'est pas en UTF-8. Le cas le plus courant est du texte chinois encodé en GBK par un ancien site, par exemple %D6%D0 ; comme decodeURIComponent dans le navigateur, cet outil n'accepte que l'UTF-8, signale une erreur et indique où elle se trouve. Un contenu GBK peut être converti avec un outil qui gère le GBK, par exemple unquote(s, encoding='gbk') en Python. La même erreur apparaît quand le texte a été coupé à la copie, par exemple %E4%B8 auquel il manque le dernier octet.

Que faire face à « n'est pas suivi de deux chiffres hexadécimaux » au décodage ?

Le texte contient un signe pourcentage jamais encodé, comme 100% ou 50%off. En encodage URL, le signe pourcentage ouvre une séquence d'échappement et doit être suivi de deux chiffres hexadécimaux. Remplacez ce % par %25 et décodez à nouveau ; le message indique de quel caractère il s'agit.

Que faire si le résultat contient encore des %XX après le décodage ?

Le texte a très probablement été encodé deux fois ; par exemple, %2520 donne %20 après un décodage. Décodez-le une seconde fois : cliquez sur « ⇄ Utiliser le résultat comme entrée » pour remettre le résultat dans le champ d'entrée, puis cliquez de nouveau sur « Décoder ».

Le résultat est-il identique à l'encodage URL de PHP, Python ou Java ?

En grande partie, avec quelques différences de détail. encodeURIComponent est proche de rawurlencode en PHP et de urllib.parse.quote(s, safe='') en Python, sauf qu'il n'encode pas « ! ' ( ) * ». URLEncoder en Java et urlencode en PHP écrivent un espace sous la forme +, alors que cet outil écrit %20. Pour une intégration avec un autre système, fiez-vous aux règles de décodage réellement utilisées par le destinataire.

Pourquoi « Analyser l'URL » signale-t-il un protocole manquant, ou affiche-t-il autre chose que ce que j'ai saisi ?

L'analyse exige une URL complète commençant par un protocole comme https:// ; un simple nom de domaine ou un chemin provoque une erreur. Le résultat vient de l'analyseur d'URL du navigateur, il est donc normalisé : l'hôte passe en minuscules, le port affiche « (port par défaut) » quand il est omis ou égal au port par défaut, les caractères non ASCII du chemin apparaissent en %XX avec une ligne supplémentaire pour le chemin décodé, et les clés et valeurs du tableau des paramètres sont déjà décodées.

L'URL que je saisis est-elle envoyée à un serveur ?

Non. L'encodage, le décodage et l'analyse se font dans votre navigateur : les tokens, numéros de téléphone et autres paramètres contenus dans l'URL ne le quittent jamais.