Codificação URL
O realce é uma percentagem de bytes codificada.
Ferramenta online gratuita de codificação/decodificação URL. Suporta 4 modos encodeURIComponent/encodeURI/RFC 3986, destaque em tempo real de caracteres codificados, modo em lote multilinha, Query Only para codificar apenas valores de parâmetros. Processamento local no navegador, sem upload de dados.
Sugestões Relacionadas
O que é codificação URL?
A codificação URL (codificação por cento) é o processo de conversão de caracteres não seguros em URLs para o formato %XX. URLs podem conter apenas um pequeno subconjunto de caracteres ASCII (letras, dígitos, -_.~), todos os outros caracteres (incluindo chinês, espaços, símbolos especiais) devem ser codificados antes de serem transmitidos em uma URL. Por exemplo, espaço é codificado como %20, o caractere chinês '中' como %E4%B8%AD.
**encodeURIComponent vs encodeURI**: Estas são as duas funções de codificação mais usadas. encodeURIComponent codifica mais exaustivamente, incluindo delimitadores de parâmetros como &, =, ?, sendo adequada para codificar valores de parâmetros individuais. encodeURI preserva a estrutura da URL (esquema://, caminho, /, ?, #), sendo adequada para codificar URLs completas. O uso incorreto causa erros de análise de parâmetros.
**RFC 3986 vs padrões antigos**: RFC 3986 trata o til ~ como um caractere seguro que não precisa ser codificado, enquanto padrões iniciais o codificam como %7E. O uso do RFC 3986 reduz escapes desnecessários, melhora a legibilidade da URL e evita problemas de análise de %7E em alguns servidores.
**Modo Query Only**: É usado quando você precisa apenas codificar os valores dos parâmetros de consulta na URL, sem afetar os nomes das chaves, sinais de igual e símbolos &. Por exemplo, ?name=张三 é codificado como ?name=%E5%BC%A0%E4%B8%89, mantendo os nomes das chaves legíveis e codificando apenas os valores.
**Destaque de codificação**: Destaca em tempo real caracteres no formato %XX em cor âmbar para que os usuários vejam de relance quais caracteres foram codificados. Isso ajuda a entender as regras de codificação: letras e números geralmente são caracteres seguros que não são codificados, apenas chinês e símbolos especiais são codificados. Todos os cálculos são feitos localmente no navegador, sem envio de dados.
Casos de uso
- Depuração de parâmetros API: compara as saídas de encodeURIComponent e encodeURI para resolver problemas de incompatibilidade de assinatura de interface
- Decodificação de logs: decodifica em lote conteúdo codificado URL em logs para restaurar texto legível
- Construção de URL: modo Query Only preserva nomes de chaves e codifica apenas valores, evitando erros de formato por concatenação manual
- Desenvolvimento frontend: destaque ajuda a entender quais caracteres são escapados, útil para depurar redirecionamentos de página
- Migração de dados: processa em lote dados codificados URL exportados de sistemas legados para conversão para novo formato
Como Usar
- Insira ou cole a URL ou texto a ser codificado/decodificado
- Selecione a direção de codificação (Codificar/Decodificar) e o modo (Component / URI / full / RFC 3986)
- Ative o modo em lote para dados multilinha, ou Query Only para codificar apenas valores de parâmetros
- Verifique o resultado destacado e copie a string codificada para uso em solicitações API ou construção de URL
Recursos
- Quatro modos de codificação: troca com um clique entre encodeURIComponent / encodeURI / full / RFC 3986, comparação em tempo real das diferenças de saída
- Destaque de codificação: destaca em tempo real os caracteres %XX escapados, marcação âmbar torna os resultados da codificação visíveis de relance
- Modo em lote: suporte a codificação/decodificação multilinha em lote, cada linha é processada independentemente, ideal para logs ou dados em massa
- Modo Query Only: codifica apenas a parte do valor do parâmetro URL (após o sinal de igual), mantendo intactos os nomes das chaves, símbolos e estrutura do caminho
- Debounce em tempo real: codificação/decodificação automática em 300ms, sem necessidade de clicar em botões, resultados aparecem ao digitar
- Contagem de caracteres: exibe em tempo real o número de caracteres inseridos, prático para verificar limites de comprimento de parâmetros API
Exemplos de Código
Codificação/Decodificação URL em JavaScript
// encodeURIComponent: codifica valores de parâmetros individuais (mais comum)
const param = encodeURIComponent('张三&李四');
console.log(param); // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B
// encodeURI: codifica URL completa (preserva caracteres estruturais :/?#&=)
const url = encodeURI('https://example.com/search?q=olá mundo');
console.log(url);
// Decodificação
const decoded = decodeURIComponent(param);
console.log(decoded); // 张三&李四
// Compatível com RFC 3986 (~ não é codificado)
function rfc3986Encode(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, c => '%' + c.charCodeAt(0).toString(16).toUpperCase());
}
// API URLSearchParams (método moderno, codificação automática)
const params = new URLSearchParams({ name: '张三', city: '北京' });
console.log(params.toString());
// name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%ACCodificação/Decodificação URL em Python
from urllib.parse import quote, unquote, urlencode, quote_plus
# quote: semelhante ao encodeURIComponent
encoded = quote('张三&李四')
print(encoded) # %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B
# Modo RFC 3986 (~ não é codificado, é o padrão)
print(quote('hello~world')) # hello~world
# quote_plus: espaços são codificados como + (formato de formulário)
print(quote_plus('hello world')) # hello+world
# Decodificação
print(unquote(encoded)) # 张三&李四
# urlencode: construir query string
params = urlencode({'name': '张三', 'city': '北京'})
print(params)
# name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%ACCodificação/Decodificação URL em 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 {
// Codificação URL (URLEncoder é formato de formulário, espaços são +)
String encoded = URLEncoder.encode("张三&李四", "UTF-8");
System.out.println(encoded);
// %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B
// Decodificação
String decoded = URLDecoder.decode(encoded, "UTF-8");
System.out.println(decoded); // 张三&李四
// Construir URL completa (classe URI trata codificação automaticamente)
URI uri = new URI("https", "example.com", "/search", "q=olá", null);
System.out.println(uri.toASCIIString());
}
}Perguntas frequentes
Qual é a diferença entre encodeURIComponent e encodeURI?
encodeURIComponent codifica todos os caracteres não seguros, incluindo &, =, ?, etc., sendo adequado para codificar valores de parâmetros individuais. encodeURI preserva caracteres estruturais da URL (:, /, ?, #, etc.), sendo adequado para codificar URLs completas. Caso de uso: Component para valores de parâmetros, URI para URLs completas.
Qual é a diferença entre RFC 3986 e a codificação padrão?
RFC 3986 é uma versão atualizada do padrão URL que trata o til ~ como um caractere seguro que não precisa ser codificado, enquanto padrões antigos o codificam como %7E. O uso do RFC 3986 evita diferenças de análise em alguns servidores e oferece melhor compatibilidade.
Em quais cenários o modo Query Only é usado?
É usado quando você tem uma query string URL como ?name=张三&city=北京 e deseja codificar apenas os valores dos parâmetros sem afetar os nomes das chaves e símbolos. Neste caso, name e city permanecem inalterados, enquanto os valores são codificados como %E5%BC%A0%E4%B8%89 e %E5%8C%97%E4%BA%AC.
Espaços devem ser codificados como + ou como %20?
No formato application/x-www-form-urlencoded (envio de formulários HTML), espaços são codificados como +. Mas em caminhos URL e no encodeURIComponent, espaços sempre são codificados como %20. Esta ferramenta usa o formato %20 por padrão.
Por que ferramentas diferentes produzem resultados diferentes para o mesmo caractere chinês?
Isso depende do método de codificação de caracteres. Esta ferramenta usa codificação UTF-8 (padrão Web), o caractere chinês '中' é codificado como %E4%B8%AD. Se outras ferramentas usarem codificação GBK, o resultado será %D6%D0. Recomenda-se sempre usar UTF-8 para URLs Web.
Para que serve o destaque de codificação?
Destaca caracteres codificados no formato %XX (como espaço→%20), ajudando a entender regras de codificação e resolver problemas. Letras e números são caracteres seguros que não são codificados, apenas chinês e símbolos especiais são codificados.
O próprio caractere % precisa ser codificado?
Sim. % é o caractere inicial de escape na codificação URL. Se um % literal aparecer em um valor de parâmetro, ele deve ser codificado como %25; caso contrário, será interpretado erroneamente como um prefixo de codificação, causando erros de análise. Por exemplo, 100% deve ser codificado como 100%25.
Glossário
- Codificação por cento (Percent-encoding)
- O nome oficial da codificação URL, um método de codificação que representa caracteres usando % seguido de dois dígitos hexadecimais. Por exemplo, espaço é codificado como %20, o caractere chinês '中' como %E4%B8%AD.Wikipedia - Codificação por cento
- encodeURIComponent
- Função integrada do JavaScript que codifica todos os caracteres exceto A-Z a-z 0-9 - _ . ! ~ * ' ( ). É mais comumente usada para codificar valores individuais de parâmetros de consulta URL.
- encodeURI
- Função integrada do JavaScript que preserva caracteres estruturais da URL (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) e codifica apenas os caracteres que realmente precisam ser codificados. É usada para codificar URLs completas.
- RFC 3986
- O padrão IETF mais recente para sintaxe genérica URI (2005), que define as regras de codificação URL e classifica o til ~ como caractere não reservado (não precisa de codificação). Substitui os antigos RFC 2396 e RFC 1738.RFC 3986
- Caracteres reservados (Reserved Characters)
- Caracteres com significado especial em URLs, como : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Esses caracteres devem ser codificados quando usados como dados, mas não em suas posições estruturais.
- Caracteres não reservados (Unreserved Characters)
- Caracteres seguros que podem ser usados em qualquer posição na URL sem codificação, incluindo A-Z, a-z, 0-9, -, _, ., ~ (conforme RFC 3986).
- Query String
- A parte da URL após ?, composta por pares key=value separados por &. Por exemplo, em ?name=张三&age=20, name=张三 e age=20 são dois parâmetros.
- URLSearchParams
- API fornecida por navegadores modernos para construir e analisar facilmente query strings URL, com tratamento automático de codificação e decodificação. Mais segura e confiável que concatenação manual de strings.
- application/x-www-form-urlencoded
- O formato de envio padrão de formulários HTML, onde espaços são codificados como + em vez de %20, ligeiramente diferente de encodeURIComponent. Frameworks do lado do servidor geralmente tratam ambos os formatos automaticamente.
- Codificação UTF-8
- A codificação de caracteres padrão da Web. Na codificação URL, caracteres não ASCII (como chinês, emoji) são primeiro convertidos para sequências de bytes UTF-8, depois cada byte é codificado no formato %XX.
Comparação de escape de caracteres em 4 modos de codificação
| Caractere | Significado | encodeURIComponent | encodeURI | RFC 3986 |
|---|---|---|---|---|
Espaço | Espaço | %20 | %20 | %20 |
! | Ponto de exclamação | %21 | ! | %21 |
# | Identificador de fragmento | %23 | # | %23 |
$ | Símbolo de dólar | %24 | $ | %24 |
& | Separador de parâmetros | %26 | & | %26 |
' | Aspas simples | %27 | ' | %27 |
( | Parêntese esquerdo | %28 | ( | %28 |
) | Parêntese direito | %29 | ) | %29 |
* | Asterisco | %2A | * | %2A |
+ | Sinal de mais | %2B | + | %2B |
, | Vírgula | %2C | , | %2C |
/ | Separador de caminho | %2F | / | %2F |
: | Dois pontos | %3A | : | %3A |
; | Ponto e vírgula | %3B | ; | %3B |
= | Sinal de igual | %3D | = | %3D |
? | Query string | %3F | ? | %3F |
@ | Arroba | %40 | @ | %40 |
~ | Til | %7E | %7E | ~ |
Referência rápida de caracteres reservados URL comuns
| Codificado | Caractere original | Uso na URL |
|---|---|---|
%20 | (espaço) | Espaço |
%21 | ! | Subdelimitador |
%23 | # | Identificador de fragmento (hash) |
%25 | % | Caractere de escape em si |
%26 | & | Separador de parâmetros de consulta |
%2B | + | Sinal de mais / espaço de formulário |
%2F | / | Separador de caminho |
%3A | : | Separador de esquema |
%3D | = | Separador chave-valor |
%3F | ? | Início da query string |
%40 | @ | Separador de autenticação/email |
%5B | [ | Parâmetro de array (RFC 3986) |
Authoritative References
- Comparação Segura de Strings
- Conversão Binária
- Cifra de César
- Código Morse
- Codificação/Decodificação Hexadecimal
- Vídeo para Base64
- Base64 para Vídeo
- Imagem para Base64
- Base64 para Imagem
- Texto para Base64
- Base64 para Texto
- Verificador de hash de arquivo
- Arquivo para Base64
- Base64 para Arquivo
- Áudio para Base64
- Base64 para Áudio
- Criptografar e descriptografar AES
- Criptografia DES
- Codificador e Decodificador Base32
- Codificar e decodificar Base58
- Codificação Base64
- Decodificação Base64
- Comparação Base64
- Dividir Base64
- Mesclar Base64 em várias linhas
- Formatação Base64
- Verificação de Formato Base64
- Codificação Base64 em lote
- Decodificação Base64 em Lote
- Limpeza de Base64
- Preenchimento Base64
- Estatísticas Base64
- Base64 para Hexadecimal
- Conversor Base64 DataURL
- Conversor Base64-Hex
- Codificador Base85
- Gerador e Verificador HMAC
- Derivação de Chave PBKDF2
- Hash MD5
- Hash SHA-256
- Hash SHA1
- Hash SHA512
- Ferramenta JWT
- Codificação e Decodificação HTML
- Escape Unicode
- Codificação URL
- Base64 URL Safe
- MIME Base64
- Ofuscador Java
- Ofuscador JS
- Ofuscador PHP
- Ofuscação Python