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
Paramètres de requête
| Clé | Valeur |
|---|
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.