ByteCompress

Encodeur d'URL

Encodez par pourcentage les caractères spéciaux dans les URL ou les composants URI individuels pour qu'ils soient sûrs à transmettre dans les requêtes HTTP, les chaînes de requête et les données de formulaire. Suivez le RFC 3986.

0 chars
FreeClient-sideNo signup

Un caractère d'espace dans une chaîne de requête URL casse silencieusement la requête. Le RFC 3986 (Identifiant de ressource uniforme : syntaxe générique) définit quels caractères sont sûrs dans une URL et lesquels doivent être encodés par pourcentage. L'encodage par pourcentage remplace chaque octet non sécurisé par % suivi de deux chiffres hexadécimaux majuscules. Cet encodeur basé sur le navigateur applique instantanément le RFC 3986, sans transmettre vos données nulle part. Utilisez-le pour encoder des URL complètes ou des valeurs de paramètres de requête individuelles et obtenir une sortie conforme aux normes à chaque fois.

Comment encoder une URL

  1. Collez l'URL ou le texte dans le champ de saisie.
  2. Choisissez le mode URL complète pour encoder uniquement les caractères non sécurisés, ou le mode Composant pour encoder tous les caractères spéciaux, y compris & et =.
  3. La sortie encodée par pourcentage apparaît dans le panneau de résultats.
  4. Copiez la chaîne encodée pour l'utiliser dans votre requête, votre code ou votre documentation.

Comprendre l'encodage par pourcentage

La norme RFC 3986

RFC 3986 (IETF, 2005) définit deux catégories de caractères dans une URI. Les caractères non réservés (A-Z a-z 0-9 - _ . ~) peuvent apparaître sans encodage. Les caractères réservés (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) ont une signification structurelle spéciale et peuvent nécessiter ou non un encodage selon le contexte. Chaque autre caractère - y compris les espaces, les caractères Unicode non-ASCII et les caractères en dehors de ces ensembles - doit être encodé par pourcentage.

encodeURI vs encodeURIComponent

JavaScript fournit deux fonctions d'encodage. encodeURI() encode une URL complète et laisse les caractères réservés intacts car ils jouent des rôles structurels. encodeURIComponent() encode également les caractères structurels, les traitant comme des données littérales - il est conçu pour les noms et valeurs de paramètres de requête individuels où & et = pourraient casser la syntaxe de l'URL. Le mode URL complète de cet outil correspond à encodeURI ; le mode Composant correspond à encodeURIComponent.

Exemple

Entrée

Hello World! @2024

Sortie (mode Composant)

Hello%20World!%20%402024

L'espace s'encode en %20 (norme RFC 3986) ; @ devient %40. Le point d'exclamation est un caractère non réservé dans certains contextes et peut ou non être encodé selon le mode.

Cas d'utilisation courants

  • Valeurs de paramètres de requête - Encodez les valeurs contenant &, = ou + avant de les ajouter à une URL
  • Requêtes de moteur de recherche - Encodez l'entrée de recherche de l'utilisateur avant de construire une URL de redirection
  • Construction de requêtes API - Encodez les segments de chemin contenant des barres obliques, des espaces ou des caractères spéciaux
  • Paramètres OAuth - Les chaînes de base de signature OAuth 1.0 nécessitent un encodage par pourcentage selon le RFC 5849

Erreurs courantes

  • Double encodage - Si une valeur est déjà encodée par pourcentage, l'encoder à nouveau encode le % lui-même, produisant %2520 au lieu de %20
  • Utilisation du mode URL complète pour les valeurs de paramètres - Le mode URL complète laisse & et = non encodés, cassant la syntaxe de la chaîne de requête ; utilisez le mode Composant pour les valeurs de paramètres
  • Oublier les caractères non-ASCII - Le texte non-ASCII doit d'abord être converti en octets UTF-8, puis chaque octet est encodé par pourcentage séparément

Pour inverser le processus, utilisez le Décodeur d'URL. Pour les données binaires transportées dans les paramètres de requête URL, encodez d'abord avec l'Encodeur Base64 en mode sûr pour l'URL, puis la sortie est déjà sûre pour l'URL sans encodage par pourcentage supplémentaire.

Questions fréquentes

Quelle est la différence entre l'encodage URL et l'encodage Base64 ?

L'encodage par pourcentage remplace les caractères non sécurisés par des séquences hexadécimales %XX tout en conservant les caractères sûrs tels quels, donc la longueur de sortie est similaire à celle de l'entrée. Le Base64 convertit toutes les données en un alphabet de 64 caractères, augmentant la taille de 33 % tout en garantissant que le résultat ne contient que des caractères ASCII sûrs. L'encodage par pourcentage rend certains caractères sûrs pour l'URL ; le Base64 encode des données binaires arbitraires en texte.

Quand devrais-je utiliser encodeURI vs encodeURIComponent en JavaScript ?
encodeURI() est utilisé pour encoder une URL complète - il préserve les caractères structurels comme : / ? # & =. encodeURIComponent() est utilisé pour encoder des valeurs individuelles à l'intérieur d'une URL - il encode les caractères structurels afin qu'ils soient traités comme des données littérales plutôt que comme une syntaxe d'URL. En cas de doute, utilisez encodeURIComponent() pour toute entrée fournie par l'utilisateur.
Pourquoi un espace devient-il %20 dans certains encodeurs mais + dans d'autres ?
%20 est l'encodage par pourcentage RFC 3986 pour un espace et est correct pour les segments de chemin URI et les valeurs de requête. Le signe + représentant un espace est spécifique à application/x-www-form-urlencoded (soumissions de formulaires HTML), qui précède le RFC 3986. Les deux sont valides dans leurs contextes respectifs, mais %20 est la norme universelle en dehors des formulaires HTML.
L'encodage URL fonctionne-t-il pour les caractères non-ASCII ?

Oui. Les caractères non-ASCII sont d'abord convertis en octets UTF-8, puis chaque octet est encodé par pourcentage séparément. Le caractère ş (U+015F) devient %C5%9F. Le caractère chinois 中 (U+4E2D) devient %E4%B8%AD. Les navigateurs modernes et les serveurs s'attendent tous à un encodage UTF-8 pour les caractères non-ASCII dans les URL.

Mes données d'URL sont-elles envoyées à vos serveurs lorsque j'utilise cet outil ?

Non. Tout l'encodage utilise encodeURI() ou encodeURIComponent() s'exécutant localement dans votre navigateur. Les URL, les paramètres de requête, les jetons d'authentification et toutes les autres données que vous collez ne sont jamais transmises à nos serveurs.