Codificador de Componentes URI

Se você já passou um valor como name=John & Jane em uma URL sem codificá-lo, você conhece a dor: o & é lido como um novo parâmetro e o servidor vê lixo. Esta ferramenta codifica em percentual qualquer string para uso seguro como componente URI seguindo a RFC 3986, transformando cada caractere reservado em um par %HH (espaços incluídos). Cole um fragmento, um valor de consulta ou um alvo de redirecionamento e receba algo seguro para concatenar em qualquer URL.

Como codificar um componente URI

  1. 1

    Cole seu valor

    Insira um único valor de parâmetro de consulta, segmento de caminho ou string de fragmento.

  2. 2

    Escolha codificar ou decodificar

    Mude o sentido para transformar as codificações percentuais de volta nos caracteres originais.

  3. 3

    Execute

    A ferramenta codifica cada caractere em UTF-8 e depois substitui cada byte reservado por %HH.

  4. 4

    Copie o resultado

    Cole a saída diretamente no seu modelo de URL ou cliente de API.

O que é escapado

Este codificador segue a RFC 3986: apenas o conjunto não reservado passa intocado, A-Z a-z 0-9 - _ . ~. Todo o resto vira UTF-8 codificado em percentual, incluindo o espaço e os subdelimitadores ! * ' ( ) que o encodeURIComponent do JavaScript deixaria intactos.

Caractere Codificado como
espaço %20
! %21
# %23
& %26
' %27
( %28
) %29
* %2A
+ %2B
/ %2F
= %3D
? %3F
é %C3%A9

Componente vs URI completo

Este codificador é mais rigoroso que encodeURI, que deixa : / ? # [ ] @ ! $ & ' ( ) * + , ; = intactos porque esses caracteres são estruturais em uma URL. Para um valor que você concatena em uma string de consulta, você quer a forma rigorosa, que é exatamente o que esta ferramenta produz: ela escapa até ! ' ( ) *, indo um passo além do encodeURIComponent do JavaScript.

const url = `/search?q=${encodeURIComponent(userInput)}`;

Armadilhas comuns

  • Codificação dupla: codificar algo que já está codificado resulta em %2520 em vez de %20. Sempre decodifique primeiro se não tiver certeza sobre a origem.
  • Sinais de mais em formulários: a submissão de formulários HTML codifica espaços como +, não %20. Decodificadores que seguem estritamente a RFC 3986 (este incluído) não transformarão + de volta em um espaço. Use um decodificador ciente de formulários para esses casos.
  • Separadores de caminho: codificar / aqui o transforma em %2F. Se você precisa preservar a estrutura real do caminho, junte os segmentos primeiro e codifique cada um separadamente.

Perguntas frequentes

É codificação percentual da RFC 3986, a forma rigorosa. Ela escapa :, /, ?, # e os demais caracteres reservados (além de !, ', (, ) e *) porque um componente não deve carregar a estrutura da URL dentro dele. Isso a torna mais rigorosa que o encodeURIComponent do JavaScript e muito mais rigorosa que encodeURI.

%20 é a forma da RFC 3986. + para espaço é um legado da codificação de corpo application/x-www-form-urlencoded. Para strings de consulta em URLs, %20 é sempre seguro; + é esperado no servidor apenas quando foi produzido por um POST de formulário.

Cada caractere é codificado em UTF-8 primeiro, depois cada byte é escapado. Um caractere como 日 se torna %E6%97%A5 (três bytes).

Não. O valor é codificado em percentual no servidor para construir o seu resultado e não é armazenado nem registrado; nada do que você cola é retido depois que a resposta é enviada.

Ferramentas relacionadas

Ferramenta disponível em outros idiomas