Codage/Décodage URL

Coder et décoder des chaînes URL pour gérer en toute sécurité les caractères spéciaux et les textes non ASCII, idéal pour les paramètres de requête et le transfert de chemins.

Coder

Mode de codage

Décoder

Instructions d'utilisation

Le codage URL convertit les caractères spéciaux ou non ASCII en format %XX pour permettre un transfert sécurisé dans les URLs.
Utilisez « Coder » pour transformer le texte en une forme sécurisée adaptée aux URLs (par exemple, les paramètres de requête).
Utilisez « Décoder » pour restaurer les séquences %XX en leurs caractères d'origine.
Scénarios courants : gestion des paramètres de requête, transmission de données de formulaires, appels API, etc.

Exemples rapides

Texte original
https://example.com/search?q=你好世界&type=text
Codage URL
https://example.com/search?q=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C&type=text

Fonctionnalités

  • Deux modes de codage : encodeURIComponent et encodeURI
  • Gestion flexible des espaces : encodés comme + ou %20
  • Conversion en temps réel avec affichage des statistiques de longueur entrée/sortie
  • Boutons de copie/effacement et envoi bidirectionnel vers le panneau opposé
  • Prise en charge complète de l'internationalisation et des thèmes multiples DaisyUI

Qu'est-ce que le codage URL ?

L'encodage URL convertit les caractères en séquences de codage en pourcentage %XX pour un transfert sécurisé dans les URL.

encodeURIComponent s'applique à un seul composant (comme une valeur de paramètre de requête) et encode la plupart des caractères non alphanumériques.

encodeURI s'applique à une chaîne URI complète et ne code pas les caractères réservés ayant une signification structurelle tels que ?, &, =, / .

Usages courants

  • Construction de paramètres de requête (mots-clés de recherche, critères de filtrage, etc.)
  • Encodage et transmission des données de formulaire GET/POST
  • Encodage des paramètres de requête API
  • Insérer en toute sécurité les entrées utilisateur dans les segments de chemin d'URL

Questions fréquentes et pièges

  • encodeURI vs encodeURIComponent : utilisez component pour les paramètres, et URI pour l'URL complète
  • Espace et + : application/x-www-form-urlencoded utilise couramment + pour représenter un espace dans la chaîne de requête
  • Évitez le décodage multiple : plusieurs décodages peuvent corrompre les données
  • Les séquences de pourcentage invalides lèvent une erreur ; gerez les exceptions de manière élégante

Comment effectuer un codage/décodage URL dans les langages de programmation

JavaScript
Encoder
// Component (recommended for query values)
const encoded = encodeURIComponent(text);
// If you need '+' for spaces in query strings
const encodedPlus = encoded.replace(/%20/g, '+');
// Full URI
const encodedUri = encodeURI(url);
Décoder
// Treat '+' as space if needed
const input = plusAsSpace ? s.replace(/\+/g, ' ') : s;
// Component
const dec1 = decodeURIComponent(input);
// Fallback to decodeURI when input is a full URL
const dec2 = decodeURI(input);
PHP
Encoder
// Component (RFC 3986)
$encoded = rawurlencode($text);
// '+' for spaces (application/x-www-form-urlencoded)
$encodedPlus = str_replace('%20', '+', $encoded);
// Full query usage
$query = http_build_query(['q' => '你好 世界', 'type' => 'text']);
Décoder
// Component
$decoded = rawurldecode($s);
// If input uses '+' for spaces
$decodedPlus = urldecode($s);
Python
Encoder
from urllib.parse import quote, quote_plus

# Component (RFC 3986)
enc = quote(text, safe='')
# '+' for spaces (application/x-www-form-urlencoded)
enc_plus = quote_plus(text)
Décoder
from urllib.parse import unquote, unquote_plus

# Component
dec = unquote(s)
# Input with '+' for spaces
dec_plus = unquote_plus(s)
Go
Encoder
import (
    "net/url"
)

// Query component
enc := url.QueryEscape(text) // spaces => +
// Path segment
// go1.8+
// url.PathEscape(text)
Décoder
import (
    "net/url"
)

// Query component
dec, _ := url.QueryUnescape(s)
// Path segment
// url.PathUnescape(s)
Rust
Encoder
// Cargo.toml: urlencoding = "^2"
use urlencoding::{encode, encode_binary};

let enc = encode(text);              // component; spaces => %20
let enc_plus = enc.replace("%20", "+"); // if you need '+' for spaces
Décoder
use urlencoding::decode;

// decode treats '+' as space
let dec = decode(s)?; // Result, _>
Java
Encoder
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

// Query param / form style (spaces => '+')
String enc = URLEncoder.encode(text, StandardCharsets.UTF_8);
// For RFC3986-like component encoding, replace '+' with %20 if needed
String encSpace = enc.replace("+", "%20");
Décoder
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;

// URLDecoder treats '+' as space
String dec = URLDecoder.decode(s, StandardCharsets.UTF_8);