logo
GeekFormat

Codificação URL

Código de codificação
Entrada de URL
0 chars

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

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

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

Como Usar

  1. Insira ou cole a URL ou texto a ser codificado/decodificado
  2. Selecione a direção de codificação (Codificar/Decodificar) e o modo (Component / URI / full / RFC 3986)
  3. Ative o modo em lote para dados multilinha, ou Query Only para codificar apenas valores de parâmetros
  4. Verifique o resultado destacado e copie a string codificada para uso em solicitações API ou construção de URL

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.

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.

术语表

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

CaractereSignificadoencodeURIComponentencodeURIRFC 3986
EspaçoEspaç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

CodificadoCaractere originalUso 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)

Code Examples

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%AC

Codificaçã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%AC

Codificaçã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());
    }
}

Authoritative References