Pular para o conteúdo

Codificar e decodificar URL

URL Encoder & Decoder

Faz percent-encoding e decodifica URLs e valores de query, com modo de componente ou de URL inteira.

Codifica e decodifica URLs em percent-encoding, mantendo separadas as quatro regras diferentes que todas são chamadas de “codificação de URL”: `encodeURIComponent`, `encodeURI`, RFC 3986 estrito e a codificação de formulário em que um espaço vira `+`. Escolher a errada é o que produz um link que funciona até alguém digitar um `&`.

🔒 Roda inteiramente no seu navegadorurlencodedecodepercent
Regras
Direção
Escopo

Um valor de query, um segmento de caminho, um fragmento. `encodeURIComponent`: escapa `/ ? : @ & = + $ , #` e deixa `A-Za-z0-9 - _ . ! ~ * ' ( )`.

Texto

Codificado

Entrada

0 caracteres

Saída

0 caracteres

Caracteres escapados

0

Como usar

  1. Escolha o escopo primeiro

    Componente para um valor de query ou um segmento de caminho: esse é o caso comum. URL inteira só para uma URL que você já tem e só quer arrumar; ela deliberadamente deixa `?`, `&` e `/` em paz.

  2. Cole e leia a saída

    Os contadores abaixo dos painéis mostram quantos caracteres foram escapados, que é um jeito rápido de perceber que você escolheu um escopo que não fez nada.

  3. Defina a codificação de bytes ao decodificar uma URL antiga

    Um link de um site brasileiro de dez anos atrás codificava em percent-encoding bytes Latin-1 (ISO-8859-1 ou Windows-1252), não UTF-8, e decodificá-lo como UTF-8 dá símbolos estranhos onde havia um acento. O seletor do modo decodificar tem EUC-KR, Shift_JIS, GB18030 e a família Latin-1.

  4. Edite a query como campos quando houver muitos

    A opção “Editar como query string” divide a URL em linhas nome/valor. Os valores são mostrados decodificados e gravados de volta codificados, então uma URL inteira aninhada dentro de um parâmetro `next=` sobrevive à edição.

Perguntas frequentes

Qual é a diferença entre Componente e URL inteira?

Componente escapa os delimitadores — `/ ? : @ & = +` — porque um *valor* que os contivesse quebraria a URL em pedaços. URL inteira os deixa porque eles são a estrutura. Usar URL inteira em um valor é o jeito padrão de construir um link que falha assim que o valor contém um e comercial.

Por que minha assinatura não verifica?

Provavelmente porque `encodeURIComponent` deixa `! ' ( ) *` em paz e a RFC 3986 não. OAuth 1.0, AWS SigV4 e a maioria dos outros esquemas de assinatura canonicalizam com a regra estrita, então um valor com um apóstrofo gera um hash diferente. É para isso que existe o escopo Estrito.

O que significa a nota “codificado duas vezes”?

Que decodificar o resultado de novo produz algo diferente: um `%2520` onde se queria um `%20`. Normalmente significa que um valor passou por um codificador no cliente e de novo em um proxy ou um framework. Decodifique duas vezes para obter o original, e depois conserte o pipeline.

Por que um espaço às vezes é `+` e às vezes `%20`?

`+` pertence a `application/x-www-form-urlencoded`: corpos de POST de formulário e o que `URLSearchParams` produz. Em qualquer outro lugar de uma URL um espaço é `%20`, e um `+` significa um sinal de mais literal. Misturar os dois transforma `a+b` em `a b` ou o contrário.

Pode receber de

Em seguida

Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.