Encodeur/Décodeur d'URL

Encodez les caractères spéciaux pour les URLs ou décodez les chaînes URL encodées en pourcentage. Essentiel pour le développement web et le travail API.

Comment Utiliser

  1. Saisissez ou collez votre texte ou URL dans la zone de saisie
  2. Cliquez sur Encoder pour encoder les caractères spéciaux en pourcentage, ou sur Décoder pour revenir en arrière
  3. Copiez le résultat pour l'utiliser dans votre application

Questions Fréquentes

  • Qu'est-ce que l'encodage d'URL ?

    L'encodage d'URL (aussi appelé encodage en pourcentage) remplace les caractères spéciaux par un signe de pourcentage suivi de leur valeur hexadécimale. Par exemple, un espace devient %20.

  • Quand dois-je encoder une URL ?

    Encodez les URLs lorsque vous incluez des caractères spéciaux dans des paramètres d'URL, des chaînes de requête ou des données de formulaire qui seront envoyées via HTTP.

  • Quelle est la différence entre encodeURI et encodeURIComponent ?

    encodeURI encode un URI complet en préservant des caractères comme :, / et ?. encodeURIComponent encode tout sauf les lettres, les chiffres et quelques caractères spéciaux, ce qui le rend adapté à l'encodage de valeurs de paramètres individuels.

  • Gère-t-il les caractères Unicode ?

    Oui, les caractères Unicode sont d'abord encodés en octets UTF-8, puis chaque octet est encodé en pourcentage.

Les fondements de l'encodage d'URL

Le protocole HTTP et les URLs ont été conçus à une époque où le jeu de caractères dominant était l'ASCII 7 bits. Or, une URL peut contenir des caractères qui ont une signification spéciale dans la syntaxe même des URLs — comme ?, &, =, # ou / — ou des caractères qui ne font tout simplement pas partie de l'ASCII, comme les lettres accentuées, les idéogrammes asiatiques ou les emojis.

L'encodage en pourcentage (percent-encoding) est la solution définie par la RFC 3986 pour résoudre ce problème. Chaque caractère problématique est remplacé par un signe % suivi de son code hexadécimal UTF-8. Par exemple :

  • Espace → %20
  • é%C3%A9
  • @%40
  • ?%3F (dans les valeurs de paramètres)

encodeURI vs encodeURIComponent

JavaScript propose deux fonctions natives dont les comportements sont souvent confondus :

encodeURI()

Conçue pour encoder une URL complète. Elle préserve intentionnellement tous les caractères qui ont un rôle structurel dans une URL : :, /, ?, &, =, #, @. Utilisez-la quand vous avez une URL entière à encoder.

encodeURI("https://example.com/recherche?q=café au lait")
// → "https://example.com/recherche?q=caf%C3%A9%20au%20lait"

encodeURIComponent()

Conçue pour encoder une valeur individuelle d'un paramètre. Elle encode tous les caractères spéciaux, y compris ?, &, = et /, ce qui est indispensable quand la valeur elle-même peut contenir ces symboles.

encodeURIComponent("prix=10€ & remise=20%")
// → "prix%3D10%E2%82%AC%20%26%20remise%3D20%25"

Gestion des caractères Unicode

Les caractères en dehors du plan ASCII (accents, caractères arabes, chinois, emojis...) sont d'abord convertis en octets UTF-8, puis chaque octet est exprimé en notation hexadécimale précédée d'un %. Un caractère comme (U+20AC) nécessite 3 octets en UTF-8, ce qui donne %E2%82%AC.

Cette double conversion — Unicode vers UTF-8, puis UTF-8 vers percent-encoding — garantit que n'importe quel caractère humain peut être représenté dans une URL valide.

Quand l'encodage est-il nécessaire ?

  • Paramètres de requête : toujours encoder les valeurs des paramètres ?clé=valeur.
  • Chemins d'URL : encoder les segments contenant des barres obliques, espaces ou caractères spéciaux.
  • Données de formulaire : les navigateurs encodent automatiquement les données application/x-www-form-urlencoded.
  • En-têtes HTTP : certains en-têtes comme Location lors d'une redirection doivent contenir des URLs correctement encodées.

Bonnes pratiques

  • Utilisez encodeURIComponent pour les valeurs, encodeURI pour les URLs complètes.
  • Ne double-encodez pas : si une URL contient déjà %20, l'encoder à nouveau produira %2520, ce qui est incorrect.
  • Décodez toujours les paramètres côté serveur avant de les utiliser, pour éviter les injections.