URL Encode/Decode - Portal WebEngine
Voltar para Ferramentas

URL Encode/Decode

Codifique e decodifique URLs

Espaço para Anúncio

O que é URL Encoding (Percent-Encoding)?

URL encoding, também conhecido como percent-encoding, é o mecanismo de transformar caracteres especiais em uma representação segura para uso em URLs. Caracteres como espaços, acentos, cifrão, e comercial (&), e outros que têm significado especial na sintaxe HTTP precisam ser codificados para que a URL funcione corretamente.

O processo substitui cada caractere especial por um percentual seguido de dois dígitos hexadecimais. Por exemplo, um espaço vira %20, a letra "ç" vira %C3%A7, e o caractere "&" vira %26. Isso é essencial ao construir URLs dinamicamente, enviar parâmetros via query string, ou transmitir dados em formulários HTML.

Existem duas funções principais: encodeURIComponent() que codifica tudo exceto caracteres alfanuméricos e - _ . ! ~ * ' ( ), e encodeURI() que codifica apenas caracteres que não são válidos em uma URL completa. A primeira é mais usada para parâmetros individuais, a segunda para URLs inteiras.

Quando Usar Encode e Decode

  • Use encode ao enviar dados via query string — parâmetros com espaços ou acentos precisam ser codificados.
  • Use decode para analisar URLs recebidas de APIs ou formulários que contêm caracteres codificados.
  • encodeURIComponent() para valores de parâmetros; encodeURI() para URLs completas.
  • Nunca codifique uma URL que já foi codificada — isso causa "double encoding" com %25 no lugar de %.
  • Em formulários HTML, o atributo enctype="application/x-www-form-urlencoded" faz a codificação automaticamente.
  • Para caracteres como +, lembre que no formulário + representa espaço, mas em URLs %20 é o espaço correto.

Perguntas Frequentes

Qual a diferença entre encodeURI e encodeURIComponent?

encodeURI() não codifica caracteres de URL como :/?#[]@!$&'()*+,;= — é para codificar URLs completas. encodeURIComponent() codifica quase tudo, exceto - _ . ! ~ * ' ( ) — é para codificar valores individuais de parâmetros. Use encodeURIComponent para valores dentro de uma URL.

Por que o espaço vira + ou %20?

Na especificação original de formulários HTML (application/x-www-form-urlencoded), espaços eram codificados como +. Na especificação de URLs (RFC 3986), espaços devem ser %20. Ambos são aceitos, mas %20 é o padrão correto para URLs. O + é uma conveniência de formulários.

URL encoding preserva acentos e caracteres especiais do português?

Sim. Caracteres como ç, ã, é, ü são convertidos para sua representação UTF-8 em percent-encoding. Exemplo: "ç" vira %C3%A7 (dois bytes em UTF-8). Ao decodificar, o caractere original é restaurado corretamente desde que o encoding seja UTF-8.

Quando devo usar decodeURIComponent vs decodeURI?

Use decodeURIComponent() para decodificar valores individuais de parâmetros (o mais comum). Use decodeURI() quando precisar decodificar uma URL inteira preservando a estrutura. Na dúvida, decodeURIComponent é a escolha mais segura para dados de query string.

Posso ter problemas de segurança com URL encoding?

Sim. URL encoding inadequado pode levar a vulnerabilidades como URL injection e parameter tampering. Nunca confie em URLs recebidas de fontes desconhecidas sem sanitizar. Em aplicações web, sempre valide e sanitize parâmetros de URL antes de processá-los no servidor.