Codificar e decodificar URL

Codifique ou decodifique um endereço, um valor de consulta ou o corpo de um formulário. UTF-8 corresponde a encodeURIComponent. Troque a codificação se o outro lado não for Unicode.

Três codificações, três lugares no endereço

Uma barra no caminho tem de continuar barra. Dentro de um parâmetro tem de virar %2F. No formulário o espaço é +; na query, quase sempre %20. Codificar o endereço inteiro com a função errada abre outra página.

  • Um valor é encodeURIComponent. Busca, id, retorno.
  • O endereço inteiro é encodeURI. Ficam : / ? #.
  • Corpo do formulário: o espaço vira mais. É um POST, não um link.

O que costuma sair errado

Um mais de verdade dentro do valor tem de ser %2B, senão o servidor lê um espaço. & e = dentro do valor abrem o parâmetro seguinte. UTF-8 é o padrão e corresponde a encodeURIComponent: cada byte de um acento vira % mais dois hexadecimais. «ação» não é um único escape. Se o outro lado não for Unicode, troque a codificação. Hex codifica os bytes crus do campo.

Não codifique um https:// já montado como se fosse um só valor: somem os dois-pontos e as barras. Codifique as partes e depois junte. Bytes: texto para bytes. Outra forma: Base64.

Perguntas

O espaço virou um mais

Você está no corpo do formulário. Para um link, use um valor só.

Depois de decodificar ainda tem %20

Foi codificado duas vezes. Decodifique de novo, até dar para ler.