Encodeur / Decodeur URL/ Encoder · Decoder · Formulaire

Encodez et decodez les URL avec encodeURIComponent, encodeURI ou l'encodage de formulaire en temps reel.

Encoder tous les caractères spéciaux (recommandé, pour les paramètres de requête)

Texte brut
0 caractères
Encodé
Ratio de taille: —%0 caractères
Encodages courants
%20 / +
!%21
"%22
#%23
%%25
&%26
'%27
+%2B
/%2F
=%3D
?%3F
@%40

Cet outil a-t-il résolu votre problème ?

Qu'est-ce que l'encodage URL

L'encodage URL (encodage pourcent) convertit les caractères spéciaux en `%` suivi de deux chiffres hexadécimaux. Les URL ne允许 que les lettres, chiffres et少数 symboles (`-_.~`). Les autres caractères comme l'espace (%20) ou les caractères non-ASCII doivent être encodés. Les navigateurs编码 automatiquement les URL dans la barre d'adresse, mais lors de la construction programmatique d'URL, vous devez gérer l'encodage手动ément.

Scénarios courants d'encodage URL

Passage de caractères spéciaux dans les paramètres de requête (ex: termes de recherche contenant `&` ou `=`), soumission de données de formulaire (POST utilise l'encodage URL par défaut), requêtes API avec JSON ou paramètres non-ASCII, et URLs de callback OAuth. Utilisez `encodeURIComponent()` en JavaScript ou `urllib.parse.quote()` en Python.

Exemples de code

JavaScript
// Encode a query parameter value
encodeURIComponent("Hello World! 中文")
// "Hello%20World!%20%E4%B8%AD%E6%96%87"

// Build a full query string (recommended)
const params = new URLSearchParams({
  q: "hello world",
  lang: "zh-CN",
  page: "1",
});
params.toString()
// "q=hello+world&lang=zh-CN&page=1"

// Decode
decodeURIComponent("Hello%20World%21")
// "Hello World!"
Python
from urllib.parse import (
    quote, unquote,
    urlencode, quote_plus
)

# Encode single value
quote("Hello World! 中文")
# 'Hello%20World%21%20%E4%B8%AD%E6%96%87'

# Form encoding (spaces → +)
quote_plus("hello world")
# 'hello+world'

# Build query string
urlencode({"q": "hello world", "page": 1})
# 'q=hello+world&page=1'

# Decode
unquote("Hello%20World%21")  # 'Hello World!'
Go
import "net/url"

// Encode a path segment
url.PathEscape("hello world/中文")
// "hello%20world%2F%E4%B8%AD%E6%96%87"

// Encode a query value
url.QueryEscape("hello world")
// "hello+world"

// Build query string
params := url.Values{}
params.Set("q", "hello world")
params.Set("lang", "zh-CN")
params.Encode()
// "lang=zh-CN&q=hello+world"

// Parse a URL
u, _ := url.Parse("https://example.com/search?q=hello+world")
u.Query().Get("q")  // "hello world"
Shell (curl)
# curl handles encoding automatically with --data-urlencode
curl -G https://api.example.com/search \
  --data-urlencode "q=hello world 中文" \
  --data-urlencode "page=1"

# Manual percent-encoding with Python
python3 -c "
import sys
from urllib.parse import quote
print(quote(sys.stdin.read().strip()))
" <<< "hello world 中文"

# Using jq to build encoded JSON body
curl -X POST https://api.example.com \
  -H 'Content-Type: application/json' \
  -d "$(jq -n --arg q 'hello world' '{query: $q}')"

Questions frequentes

Quelle est la difference entre encodeURIComponent et encodeURI ?
encodeURIComponent encode presque tous les caracteres speciaux (y compris :/?#[]@!$&'()*+,;=) et convient aux valeurs individuelles des parametres de requete. encodeURI preserve les caracteres structurels de l'URL, ce qui le rend adapte a l'encodage d'une URL complete. Utilisez encodeURIComponent dans la plupart des cas.
Qu'est-ce que l'encodage de formulaire (application/x-www-form-urlencoded) ?
L'encodage de formulaire est le format par defaut pour les soumissions de formulaires HTML. La seule difference avec encodeURIComponent est que les espaces deviennent + au lieu de %20. Les navigateurs l'utilisent automatiquement pour les soumissions <form>, et de nombreuses API acceptent egalement les corps de requete dans ce format.
Pourquoi les URL ne peuvent-elles pas contenir de caracteres non-ASCII ?
La specification URL (RFC 3986) n'autorise que les caracteres ASCII. Les caracteres non-ASCII comme le CJK doivent d'abord etre encodes en UTF-8 en une sequence d'octets, puis chaque octet est ecrit sous la forme %XX. Par exemple, le caractere chinois 中 est encode en %E4%B8%AD dans une URL.
Quels caracteres n'ont pas besoin d'encodage URL ?
Les 'caracteres non reserves' du RFC 3986 n'ont jamais besoin d'encodage : les lettres (A-Z, a-z), les chiffres (0-9) et les quatre symboles - _ . ~. Dans certains composants d'URL, certains caracteres reserves sont egalement autorises, mais il est generalement plus sur d'encoder en pourcentage tous les caracteres non alphanumeriques.
%20 et + representent tous deux un espace — quelle est la difference ?
%20 est l'encodage URL universel pour un espace, valide partout dans une URL. Le signe + ne signifie 'espace' que dans les chaines de requete sous la convention application/x-www-form-urlencoded — dans les chemins d'URL, + signifie un signe plus litteral. Utiliser %20 universellement evite toute ambiguite.
Comment construire correctement des chaines de requete URL en JavaScript ?
Utilisez l'API URLSearchParams : new URLSearchParams({ key: value }).toString() gere l'encodage automatiquement. Sinon, encodez manuellement chaque valeur avec encodeURIComponent(value) lors de la concatenation. Ne concatenez jamais des chaines brutes non encodees — cela conduit a des vulnerabilites d'injection et des erreurs d'analyse.