Codificador / Decodificador de URL/ Codificar · Decodificar · Formulario

Codifique e decodifique URLs com encodeURIComponent, encodeURI ou codificacao de formulario em tempo real.

Codificar todos os caracteres especiais (recomendado, para valores de parâmetros)

Texto simples
0 caracteres
Codificado
Proporção de tamanho: —%0 caracteres
Codificações comuns
%20 / +
!%21
"%22
#%23
%%25
&%26
'%27
+%2B
/%2F
=%3D
?%3F
@%40

Esta ferramenta resolveu o seu problema?

O que é codificação URL

A codificação URL (codificação percentual) converte caracteres especiais em `%` seguido de dois dígitos hexadecimais. URLs só允许 letras, números e少数 símbolos (`-_.~`). Outros caracteres como espaço (%20) ou caracteres não-ASCII devem ser codificados. Navegadores codificam automaticamente URLs na barra de endereços,但 ao construir URLs programaticamente, você deve处理 a codificação手动mente.

Cenários comuns de codificação URL

Passar caracteres especiais em parâmetros de consulta (ex: termos de busca com `&` ou `=`), envio de dados de formulário (POST usa codificação URL por padrão), solicitações API com JSON ou parâmetros não-ASCII, e URLs de callback OAuth. Use `encodeURIComponent()` em JavaScript ou `urllib.parse.quote()` em Python.

Exemplos de codigo

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}')"

Perguntas frequentes

Qual e a diferenca entre encodeURIComponent e encodeURI?
encodeURIComponent codifica quase todos os caracteres especiais (incluindo :/?#[]@!$&'()*+,;=) e e usado para valores individuais de parametros de consulta. encodeURI preserva os caracteres estruturais da URL, sendo adequado para codificar uma URL completa. Use encodeURIComponent na maioria dos casos.
O que e codificacao de formulario (application/x-www-form-urlencoded)?
A codificacao de formulario e o formato padrao para envios de formularios HTML. A unica diferenca do encodeURIComponent e que espacos se tornam + em vez de %20. Os navegadores usam isso automaticamente para envios de <form>, e muitas APIs tambem aceitam corpos de solicitacao neste formato.
Por que URLs nao podem conter caracteres nao-ASCII?
A especificacao de URL (RFC 3986) so permite caracteres ASCII. Caracteres nao-ASCII como CJK devem primeiro ser codificados em UTF-8 como sequencia de bytes, depois cada byte e escrito como %XX. Por exemplo, o caractere chines 中 e codificado como %E4%B8%AD em uma URL.
Quais caracteres nao precisam de codificacao URL?
Os 'caracteres nao reservados' do RFC 3986 nunca precisam de codificacao: letras (A-Z, a-z), digitos (0-9) e os quatro simbolos - _ . ~. Dentro de componentes especificos de URL, alguns caracteres reservados tambem sao permitidos, mas geralmente e mais seguro codificar todos os caracteres nao alfanumericos.
Tanto %20 quanto + representam um espaco. Qual e a diferenca?
%20 e a codificacao URL universal para um espaco, valida em qualquer parte de uma URL. O sinal + so significa 'espaco' em strings de consulta sob a convencao application/x-www-form-urlencoded — em caminhos de URL, + significa um sinal de mais literal. Usar %20 universalmente evita ambiguidades.
Como construir corretamente strings de consulta URL em JavaScript?
Use a API URLSearchParams: new URLSearchParams({ key: value }).toString() lida com a codificacao automaticamente. Alternativamente, codifique manualmente cada valor com encodeURIComponent(value) ao concatenar. Nunca concatene strings brutas nao codificadas — isso leva a vulnerabilidades de injecao e erros de analise.