Idioma: Português

tools / url

url/

Codificar / decodificar URL, além de dividir uma URL completa em suas partes e em uma tabela de parâmetros de consulta.

Entrada

Codificado

Analisar URL

Perguntas frequentes

Qual é a diferença entre encodeURIComponent e encodeURI, e qual devo usar?

Use encodeURIComponent para o valor de um parâmetro ou um único segmento do caminho, e encodeURI para uma URL inteira. O primeiro também converte em %XX caracteres com significado especial, como : / ? & = #, então serve apenas para uma parte da URL; o segundo os mantém, de modo que a estrutura da URL fica intacta, mas não trata um & ou = dentro do valor de um parâmetro. Letras, dígitos e - _ . ! ~ * ' ( ) não são alterados por nenhum dos dois.

Por que o espaço vira %20? Ao decodificar, o + vira espaço?

A codificação aqui escreve o espaço como %20, e não +. Ao decodificar, um + na caixa permanece como está e não vira espaço, porque o decodeURIComponent não faz essa conversão; só a tabela de parâmetros de consulta em "Analisar URL" trata o + como espaço, seguindo as regras de formulário. Para decodificar algo como a+b vindo de um envio de formulário, troque o + por um espaço manualmente antes.

O que fazer com "não é uma sequência UTF-8 válida" ao decodificar?

A sequência de %XX não é UTF-8. O caso mais comum é texto em chinês codificado em GBK por um site antigo, como %D6%D0; assim como o decodeURIComponent do navegador, esta ferramenta aceita apenas UTF-8, então informa um erro e aponta onde ele ocorreu. Conteúdo em GBK pode ser convertido com uma ferramenta que suporte GBK, por exemplo o unquote(s, encoding='gbk') do Python. O mesmo erro aparece quando o texto foi cortado ao copiar, por exemplo %E4%B8 sem o último byte.

O que fazer com "não é seguido de dois dígitos hexadecimais"?

O texto tem um sinal de porcentagem que nunca foi codificado, como 100% ou 50%off. Na codificação de URL, o sinal de porcentagem inicia uma sequência de escape e precisa ser seguido de dois dígitos hexadecimais. Troque esse % por %25 e decodifique de novo; a mensagem informa qual é o caractere.

E se o resultado ainda tiver %XX depois de decodificar?

Provavelmente foi codificado duas vezes; por exemplo, %2520 decodifica uma vez para %20. Decodifique de novo: clique em "⇄ Usar resultado como entrada" para levar o resultado de volta à caixa de entrada e clique em "Decodificar" mais uma vez.

O resultado é igual à codificação de URL do PHP, Python ou Java?

Em geral sim, com algumas diferenças nos detalhes. O encodeURIComponent é parecido com o rawurlencode do PHP e o urllib.parse.quote(s, safe='') do Python, exceto que ele não codifica ! ' ( ) *. O URLEncoder do Java e o urlencode do PHP escrevem o espaço como +, enquanto esta ferramenta escreve %20. Ao integrar com outro sistema, siga as regras de decodificação que o receptor realmente usa.

Por que "Analisar URL" diz que falta o protocolo ou mostra algo diferente do que digitei?

A análise exige uma URL completa que comece com um esquema como https://; só o domínio ou só o caminho gera erro. O resultado vem do analisador de URL do próprio navegador, então é normalizado: o host fica em minúsculas, a porta mostra "(porta padrão)" quando é omitida ou é a padrão, caracteres não ASCII no caminho aparecem como %XX com uma linha extra para o caminho decodificado, e as chaves e os valores da tabela de consulta já estão decodificados.

A URL que informo é enviada a um servidor?

Não. A codificação, a decodificação e a análise acontecem no seu navegador, então tokens, telefones e outros parâmetros dentro da URL nunca saem dele.