Aller au contenu principal

Encodeur / Décodeur d'URL

Encoder ou décoder des composants d'URL selon RFC 3986.

Vos données ne quittent jamais votre navigateur

À propos de l'Encodage d'URL

L'encodage d'URL (encodage en pourcentage) remplace les caractères non sûrs dans les URI par un signe de pourcentage suivi de deux chiffres hexadécimaux représentant la valeur de l'octet. La RFC 3986 définit l'ensemble des caractères non réservés (A-Z, a-z, 0-9, -, ., _, ~) qui n'ont jamais besoin d'être encodés. Tous les autres caractères, y compris les espaces, les esperluettes et le texte non-ASCII, doivent être encodés lorsqu'ils sont utilisés dans les composants d'URI.

Les caractères non-ASCII comme les lettres accentuées ou les idéogrammes CJK sont d'abord encodés en octets UTF-8, puis chaque octet est encodé en pourcentage individuellement. Par exemple, le caractère e-accent-aigu (U+00E9) devient %C3%A9 car sa représentation UTF-8 est constituée des deux octets 0xC3 et 0xA9. C'est pourquoi un seul caractère peut produire plusieurs triplets encodés.

Cet outil propose deux modes : mode composant (pour encoder des paramètres de requête ou des segments de chemin individuels) et mode URL complète (qui préserve les caractères structurels :, /, ?, # et &). Tout le traitement s'exécute côté client en utilisant les fonctions intégrées encodeURIComponent et decodeURIComponent.

Questions fréquentes

Qu'est-ce que l'encodage d'URL (encodage en pourcentage) ?

L'encodage d'URL, également appelé encodage en pourcentage, remplace les caractères non autorisés ou ayant une signification spéciale dans une URI par un signe de pourcentage (%) suivi de deux chiffres hexadécimaux représentant la valeur de l'octet du caractère. La RFC 3986 définit les caractères non réservés (A-Z, a-z, 0-9, -, ., _, ~) qui n'ont jamais besoin d'être encodés. Tout le reste, y compris les espaces, les esperluettes et le texte non-ASCII, doit être encodé lorsqu'il est utilisé dans les composants d'URI.

Quels caractères doivent être encodés dans les URL ?

Tout caractère en dehors de l'ensemble non réservé (lettres, chiffres, -, ., _, ~) doit être encodé en pourcentage lorsqu'il apparaît dans un composant URI tel qu'un paramètre de requête ou un segment de chemin. Les exemples courants incluent l'espace (%20), l'esperluette (%26), le signe égal (%3D), le plus (%2B) et la barre oblique (%2F). Les caractères réservés (:, /, ?, #, &, =) ont une signification structurelle dans une URL complète et ne sont encodés que lorsqu'ils sont utilisés comme données littérales dans un composant.

Quelle est la différence entre l'encodage de composant et d'URL complète ?

L'encodage de composant (encodeURIComponent) traite l'entrée comme un seul composant URI et encode chaque caractère qui n'est pas non réservé, y compris les délimiteurs structurels comme /, ? et &. L'encodage d'URL complète préserve ces caractères structurels afin que l'URL reste navigable tout en encodant les caractères non sûrs dans chaque segment. Utilisez le mode composant pour les valeurs de requête ou segments de chemin individuels, et le mode URL complète pour encoder une URL entière qui doit conserver sa structure.

Comment les caractères non-ASCII sont-ils encodés dans les URL ?

Les caractères non-ASCII sont d'abord convertis en leur représentation en octets UTF-8, puis chaque octet est encodé individuellement en pourcentage. Par exemple, la lettre accentuée é (U+00E9) s'encode en %C3%A9 car sa forme UTF-8 est constituée des deux octets 0xC3 et 0xA9. Un seul caractère chinois, japonais ou coréen peut produire trois triplets encodés car les caractères CJK nécessitent généralement trois octets UTF-8.

Pourquoi les espaces apparaissent-ils parfois comme + et parfois comme %20 ?

Le signe plus (+) comme encodage d'espace provient du format application/x-www-form-urlencoded utilisé lors des soumissions de formulaires HTML. C'est une convention héritée des premiers standards du web. L'encodage en pourcentage de la RFC 3986 utilise toujours %20 pour les espaces. En pratique, + n'est valide comme espace que dans les chaînes de requête de données de formulaire. La fonction encodeURIComponent utilisée par cet outil produit toujours %20, qui est universellement accepté.