logo
GeekFormat

Encodage URL

Code de codage
Entrée URL
0 chars

Outil gratuit en ligne d'encodage/décodage URL. Supporte 4 modes encodeURIComponent/encodeURI/RFC 3986, surlignage en temps réel des caractères encodés, mode batch multiligne, Query Only pour encoder uniquement les valeurs des paramètres. Traitement local dans le navigateur, zéro envoi de données.

Recommandations connexes

Cas d'utilisation

  • Débogage de paramètres API : compare les sorties d'encodeURIComponent et encodeURI pour résoudre les problèmes de non-correspondance de signature d'interface
  • Décodage de journaux : décode par lots le contenu encodé URL dans les journaux pour restaurer un texte lisible
  • Construction d'URL : le mode Query Only préserve les noms de clés et encode uniquement les valeurs, évitant les erreurs de format dues à la concaténation manuelle
  • Développement frontend : le surlignage aide à comprendre quels caractères sont échappés, utile pour déboguer les redirections de page
  • Migration de données : traite par lots les données encodées URL exportées de systèmes hérités pour les convertir au nouveau format

Fonctionnalités

  • Quatre modes d'encodage : basculement en un clic entre encodeURIComponent / encodeURI / full / RFC 3986, comparaison en temps réel des différences de sortie
  • Surlignage d'encodage : surligne en temps réel les caractères %XX échappés, marques de couleur ambre pour visualiser les résultats d'un coup d'œil
  • Mode batch : support de l'encodage/décodage multiligne, chaque ligne est traitée indépendamment, idéal pour les journaux ou données par lots
  • Mode Query Only : encode uniquement la partie valeur des paramètres URL (après le signe égal), en conservant intacts les noms de clés, symboles et structure de chemin
  • Debounce en temps réel : encodage/décodage automatique en 300ms, pas besoin de cliquer sur un bouton, les résultats apparaissent pendant la saisie
  • Compteur de caractères : affiche en temps réel le nombre de caractères saisis, pratique pour vérifier les limites de longueur des paramètres API

Comment utiliser

  1. Saisissez ou collez l'URL ou le texte à encoder/décoder
  2. Sélectionnez le sens d'encodage (Encoder/Décoder) et le mode (Component / URI / full / RFC 3986)
  3. Activez le mode batch pour des données multilignes, ou Query Only pour encoder uniquement les valeurs des paramètres
  4. Vérifiez le résultat surligné et copiez la chaîne encodée pour l'utiliser dans des requêtes API ou la construction d'URL

FAQ

Quelle est la différence entre encodeURIComponent et encodeURI ?

encodeURIComponent encode tous les caractères non sécurisés, y compris &, =, ?, etc., il est donc adapté pour encoder des valeurs de paramètres individuelles. encodeURI préserve les caractères structurels de l'URL (:, /, ?, #, etc.), il est donc adapté pour encoder des URL complètes. Cas d'utilisation : Component pour les valeurs de paramètres, URI pour les URL complètes.

Quelle est la différence entre RFC 3986 et l'encodage standard ?

RFC 3986 est une version mise à jour de la norme URL qui traite le tilde ~ comme un caractère sécurisé ne nécessitant pas d'encodage, alors que les anciennes normes l'encodent en %7E. L'utilisation de RFC 3986 évite les différences d'analyse sur certains serveurs et offre une meilleure compatibilité.

Dans quels cas utilise-t-on le mode Query Only ?

Il s'utilise lorsque vous avez une chaîne de requête URL comme ?name=张三&city=北京 et que vous souhaitez encoder uniquement les valeurs des paramètres sans affecter les noms de clés et les symboles. Dans ce cas, name et city restent inchangés, tandis que les valeurs sont encodées en %E5%BC%A0%E4%B8%89 et %E5%8C%97%E4%BA%AC.

Les espaces doivent-ils être encodés en + ou en %20 ?

Dans le format application/x-www-form-urlencoded (soumission de formulaires HTML), les espaces sont encodés en +. Mais dans les chemins URL et avec encodeURIComponent, les espaces sont toujours encodés en %20. Cet outil utilise le format %20 par défaut.

Pourquoi différents outils produisent-ils des résultats différents pour un même caractère chinois ?

Cela dépend de la méthode d'encodage des caractères. Cet outil utilise l'encodage UTF-8 (norme Web), le caractère chinois « 中 » est encodé en %E4%B8%AD. Si d'autres outils utilisent l'encodage GBK, le résultat sera %D6%D0. Il est recommandé de toujours utiliser UTF-8 pour les URL Web.

À quoi sert le surlignage d'encodage ?

Il surligne les caractères encodés au format %XX (comme espace→%20), aidant à comprendre les règles d'encodage et à résoudre les problèmes. Les lettres et chiffres sont des caractères sécurisés qui ne sont pas encodés, seuls le chinois et les symboles spéciaux sont encodés.

Le caractère % lui-même doit-il être encodé ?

Oui. % est le caractère de début d'échappement en encodage URL. Si un % littéral apparaît dans une valeur de paramètre, il doit être encodé en %25 ; sinon, il sera interprété à tort comme un préfixe d'encodage, provoquant des erreurs d'analyse. Par exemple, 100% doit être encodé en 100%25.

Qu'est-ce que l'encodage URL ?

L'encodage URL (encodage pour cent) est le processus de conversion des caractères non sécurisés dans les URL au format %XX. Les URL ne peuvent contenir qu'un petit sous-ensemble de caractères ASCII (lettres, chiffres, -_.~), tous les autres caractères (y compris le chinois, les espaces, les symboles spéciaux) doivent être encodés avant d'être transmis dans une URL. Par exemple, l'espace est encodé en %20, le caractère chinois « 中 » en %E4%B8%AD.

**encodeURIComponent vs encodeURI** : Ce sont les deux fonctions d'encodage les plus utilisées. encodeURIComponent encode de manière plus exhaustive, y compris les délimiteurs de paramètres comme &, =, ?, elle est donc adaptée pour encoder des valeurs de paramètres individuelles. encodeURI préserve la structure de l'URL (protocole://, chemin, /, ?, #), elle est donc adaptée pour encoder des URL complètes. Une utilisation incorrecte provoque des erreurs d'analyse de paramètres.

**RFC 3986 vs anciennes normes** : RFC 3986 traite le tilde ~ comme un caractère sécurisé ne nécessitant pas d'encodage, alors que les premières normes l'encodent en %7E. L'utilisation de RFC 3986 réduit les échappements inutiles, améliore la lisibilité des URL et évite les problèmes d'analyse de %7E sur certains serveurs.

**Mode Query Only** : Il s'utilise lorsque vous avez uniquement besoin d'encoder les valeurs des paramètres de requête dans l'URL, sans affecter les noms de clés, les signes égaux et les symboles &. Par exemple, ?name=张三 est encodé en ?name=%E5%BC%A0%E4%B8%89, les noms de clés restent lisibles et seules les valeurs sont encodées.

**Surlignage d'encodage** : Surligne en temps réel les caractères au format %XX en couleur ambre pour que les utilisateurs voient d'un coup d'œil quels caractères ont été encodés. Cela aide à comprendre les règles d'encodage : les lettres et chiffres sont généralement des caractères sécurisés qui ne sont pas encodés, seuls le chinois et les symboles spéciaux sont encodés. Tous les calculs sont effectués localement dans le navigateur, aucune donnée n'est envoyée.

术语表

Encodage pour cent (Percent-encoding)
Le nom officiel de l'encodage URL, une méthode d'encodage qui représente les caractères à l'aide de % suivi de deux chiffres hexadécimaux. Par exemple, l'espace est encodé en %20, le caractère chinois « 中 » en %E4%B8%AD.Wikipedia - Encodage pour cent
encodeURIComponent
Fonction intégrée de JavaScript qui encode tous les caractères à l'exception de A-Z a-z 0-9 - _ . ! ~ * ' ( ). Elle est le plus souvent utilisée pour encoder des valeurs individuelles de paramètres de requête URL.
encodeURI
Fonction intégrée de JavaScript qui préserve les caractères structurels de l'URL (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) et n'encode que les caractères qui nécessitent réellement un encodage. Elle est utilisée pour encoder des URL complètes.
RFC 3986
La dernière norme IETF pour la syntaxe générique URI (2005), qui définit les règles d'encodage URL et classe le tilde ~ comme caractère non réservé (ne nécessitant pas d'encodage). Remplace les anciennes RFC 2396 et RFC 1738.RFC 3986
Caractères réservés (Reserved Characters)
Caractères ayant une signification spéciale dans les URL, tels que : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Ces caractères doivent être encodés lorsqu'ils sont utilisés comme données, mais pas dans leurs positions structurelles.
Caractères non réservés (Unreserved Characters)
Caractères sécurisés pouvant être utilisés à n'importe quelle position dans une URL sans encodage, notamment A-Z, a-z, 0-9, -, _, ., ~ (selon RFC 3986).
Chaîne de requête (Query String)
La partie de l'URL après ?, composée de paires key=value séparées par &. Par exemple, dans ?name=张三&age=20, name=张三 et age=20 sont deux paramètres.
URLSearchParams
API fournie par les navigateurs modernes pour construire et analyser facilement des chaînes de requête URL, en gérant automatiquement l'encodage et le décodage. Plus sûre et fiable que la concaténation manuelle de chaînes.
application/x-www-form-urlencoded
Le format d'envoi par défaut des formulaires HTML, où les espaces sont encodés en + au lieu de %20, légèrement différent d'encodeURIComponent. Les frameworks côté serveur gèrent généralement les deux formats automatiquement.
Encodage UTF-8
L'encodage de caractères standard du Web. Dans l'encodage URL, les caractères non ASCII (tels que le chinois, les emoji) sont d'abord convertis en séquences d'octets UTF-8, puis chaque octet est encodé au format %XX.

Comparaison de l'échappement des caractères sur 4 modes d'encodage

CaractèreSignificationencodeURIComponentencodeURIRFC 3986
EspaceEspace%20%20%20
!Point d'exclamation%21!%21
#Identificateur de fragment%23#%23
$Symbole dollar%24$%24
&Séparateur de paramètres%26&%26
'Apostrophe%27'%27
(Parenthèse gauche%28(%28
)Parenthèse droite%29)%29
*Astérisque%2A*%2A
+Signe plus%2B+%2B
,Virgule%2C,%2C
/Séparateur de chemin%2F/%2F
:Deux-points%3A:%3A
;Point-virgule%3B;%3B
=Signe égal%3D=%3D
?Chaîne de requête%3F?%3F
@Arobase%40@%40
~Tilde%7E%7E~

Référence rapide des caractères réservés URL courants

EncodéCaractère d'origineUsage dans l'URL
%20(espace)Espace
%21!Sous-délimiteur
%23#Identificateur de fragment (hash)
%25%Caractère d'échappement lui-même
%26&Séparateur de paramètres de requête
%2B+Signe plus / espace de formulaire
%2F/Séparateur de chemin
%3A:Séparateur de schéma
%3D=Séparateur clé-valeur
%3F?Début de chaîne de requête
%40@Séparateur authentification/email
%5B[Paramètre tableau (RFC 3986)

Code Examples

Encodage/Décodage URL en JavaScript

// encodeURIComponent : encode les valeurs de paramètres individuelles (le plus courant)
const param = encodeURIComponent('张三&李四');
console.log(param); // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

// encodeURI : encode l'URL complète (conserve les caractères structurels :/?#&=)
const url = encodeURI('https://example.com/search?q=bonjour monde');
console.log(url);

// Décodage
const decoded = decodeURIComponent(param);
console.log(decoded); // 张三&李四

// Compatible RFC 3986 (~ n'est pas encodé)
function rfc3986Encode(str) {
  return encodeURIComponent(str).replace(/[!'()*]/g, c => '%' + c.charCodeAt(0).toString(16).toUpperCase());
}

// API URLSearchParams (méthode moderne, encodage automatique)
const params = new URLSearchParams({ name: '张三', city: '北京' });
console.log(params.toString());
// name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%AC

Encodage/Décodage URL en Python

from urllib.parse import quote, unquote, urlencode, quote_plus

# quote : similaire à encodeURIComponent
encoded = quote('张三&李四')
print(encoded)  # %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

# Mode RFC 3986 (~ n'est pas encodé, c'est le défaut)
print(quote('hello~world'))  # hello~world

# quote_plus : les espaces sont encodés en + (format formulaire)
print(quote_plus('hello world'))  # hello+world

# Décodage
print(unquote(encoded))  # 张三&李四

# urlencode : construire une chaîne de requête
params = urlencode({'name': '张三', 'city': '北京'})
print(params)
# name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%AC

Encodage/Décodage URL en Java

import java.net.URLEncoder;
import java.net.URLDecoder;
import java.net.URI;
import java.nio.charset.StandardCharsets;

public class URLEncodeExample {
    public static void main(String[] args) throws Exception {
        // Encodage URL (URLEncoder est format formulaire, espaces deviennent +)
        String encoded = URLEncoder.encode("张三&李四", "UTF-8");
        System.out.println(encoded);
        // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

        // Décodage
        String decoded = URLDecoder.decode(encoded, "UTF-8");
        System.out.println(decoded); // 张三&李四

        // Construire une URL complète (la classe URI gère automatiquement l'encodage)
        URI uri = new URI("https", "example.com", "/search", "q=bonjour", null);
        System.out.println(uri.toASCIIString());
    }
}

Authoritative References