🌐 FR

🔗 Encodeur/Décodeur d'URL

Encodez ou décodez des URL en toute sécurité. Traitez les caractères spéciaux, les caractères internationaux et les espaces dans les paramètres de requête pour créer des URL valides.

GUIDE

En savoir plus

01

1. Qu'est-ce que l'encodage d'URL ?

L'encodage d'URL (encodage pourcentage) est le processus qui consiste à convertir les caractères non sûrs d'une URL en % suivi d'un code hexadécimal. Comme les URL n'autorisent que les caractères ASCII, les caractères accentués, les caractères spéciaux et les espaces doivent être encodés. Par exemple, l'espace devient %20, @ devient %40, et le mot français « café » devient %63%61%66%C3%A9. Défini par la norme RFC 3986, tout caractère autre que A-Z, a-z, 0-9, -, _, ., ~ doit être encodé. Chaque partie d'une URL (paramètres de requête, chemins, ancres) possède ses propres règles d'encodage.

02

2. Pourquoi encoder les caractères spéciaux

Les caractères spéciaux dans une URL ont une signification particulière, il faut donc les encoder pour les utiliser comme valeurs. Par exemple, & est un séparateur de paramètres ; pour inclure & dans une valeur, il faut l'encoder en %26. = sépare une clé de sa valeur, ? marque le début de la requête, # marque le début du fragment. Les espaces sont encodés en + ou %20. Sans encodage des caractères accentués ou spéciaux, les serveurs peuvent échouer à analyser correctement l'URL ou renvoyer une erreur 404. Encodez toujours les termes de recherche ou les saisies utilisateur inclus dans une URL.

03

3. Encodage des paramètres de requête

Les paramètres de requête sont la partie de l'URL la plus souvent concernée par l'encodage. Exemple : https://example.com/search?q=terme&category=IT. Ici, « terme » et « IT » doivent tous deux être encodés. La fonction encodeURIComponent() de JavaScript encode aussi =, &, ?, ce qui la rend sûre pour les valeurs de paramètres de requête. encodeURI() sert à encoder une URL entière mais n'encode pas =, &, ?, ce qui la rend inadaptée aux valeurs de requête. Encodez toujours individuellement les clés et les valeurs avec encodeURIComponent().

04

4. encodeURI vs encodeURIComponent

JavaScript propose deux fonctions d'encodage d'URL. encodeURI() encode une URL entière et n'encode pas les caractères structurels de l'URL comme :, /, ?, &, =. À utiliser pour des URL complètes. encodeURIComponent() encode des composants d'URL (valeurs de paramètres, etc.) et encode tous les caractères structurels. À utiliser pour des composants individuels comme les paramètres de requête et les segments de chemin. Dans la plupart des cas, encodeURIComponent() est plus sûr. Le décodage se fait respectivement avec decodeURI() et decodeURIComponent().

05

5. Noms de domaine internationalisés (IDN)

Les noms de domaine en français ou dans d'autres langues (par exemple café.com) sont convertis en Punycode. Le Punycode représente les domaines Unicode en ASCII à l'aide du préfixe xn--. Exemple : « café.com » devient « xn--caf-dma.com ». Les navigateurs effectuent automatiquement cette conversion, mais un traitement direct dans le code nécessite une bibliothèque Punycode. Notez que les chemins et requêtes d'une URL utilisent l'encodage pourcentage classique, tandis que les domaines utilisent le Punycode.

06

6. Bonnes pratiques d'encodage d'URL

Quelques points importants concernant l'encodage d'URL : encodez toujours la saisie utilisateur pour prévenir les attaques XSS. Évitez d'encoder deux fois une URL déjà encodée (problème de double encodage). Lors de la construction d'une URL, encodez chaque partie individuellement avant de les assembler. Les clients HTTP comme fetch() et axios encodent souvent automatiquement, évitez donc les doublons. Les serveurs prennent généralement en charge le décodage automatique, un décodage explicite est donc rarement nécessaire. Pour la journalisation ou le débogage d'URL, il est plus lisible de consulter la forme décodée.