O resultado aparece aqui...

URL Encoding: como e por que URLs precisam ser codificadas

As URLs só podem conter um subconjunto limitado de caracteres ASCII. Caracteres especiais como espaços, acentos, símbolos (@, #, &, =) e caracteres não-ASCII (Unicode) precisam ser codificados usando o percent-encoding (RFC 3986): cada caractere é representado por % seguido do código hexadecimal do byte UTF-8. Ex: espaço = %20, @ = %40, ã = %C3%A3.

encodeURI vs encodeURIComponent: qual usar?

Função Não codifica Quando usar
encodeURI() A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) # Codificar uma URL completa preservando sua estrutura
encodeURIComponent() A-Z a-z 0-9 - _ . ! ~ * ' ( ) Codificar um componente (parâmetro de query string, segmento de caminho)
encodeURI() inverso decodeURI() Decodificar URL completa preservando estrutura
encodeURIComponent() inverso decodeURIComponent() Decodificar componente individual da URL
Perguntas frequentes — URL Encode
Por que o espaço vira %20 em URLs?
O espaço tem código ASCII 32 (0x20 em hexadecimal). No percent-encoding, cada byte é representado como % + dois dígitos hex. Portanto espaço = %20. Você pode ver também + (sinal de adição) representando espaço em query strings — isso é application/x-www-form-urlencoded, um formato mais antigo diferente do RFC 3986.
Como decodificar URL em Python?
from urllib.parse import unquote, unquote_plus; unquote("Ol%C3%A1%20mundo") retorna "Olá mundo". Para formulários: unquote_plus("Ol%C3%A1+mundo"). Para codificar: from urllib.parse import quote, urlencode; quote("Olá mundo") retorna "Ol%C3%A1%20mundo".
O que é Double URL Encoding e por que é perigoso?
Double encoding é quando uma string já codificada (%20) é codificada novamente (%2520). Alguns sistemas decodificam em duas etapas, o que pode ser explorado para contornar filtros de segurança (WAF bypass). Ex: ../etc/passwd codificado como ..%2Fetc%2Fpasswd ou %2E%2E%2Fetc%2Fpasswd. Sempre decodifique uma única vez antes de validar.
Como codificar parâmetros de URL em JavaScript para fetch/axios?
Use URLSearchParams: const params = new URLSearchParams({q:"busca especial", page:1}); fetch("/api?"+params.toString()). Ou encodeURIComponent para parâmetros individuais: `/api?q=${encodeURIComponent(query)}`. Nunca construa query strings concatenando strings sem encoding.
Qual o tamanho máximo de uma URL?
Não há limite definido no RFC, mas na prática: Chrome suporta até ~2MB de URL, Internet Explorer tinha limite de 2.083 caracteres. Servidores como Apache e Nginx têm limites configuráveis (padrão 4KB-8KB para a linha de requisição HTTP). Para dados grandes, use POST com body em vez de query string.
Como codificar um objeto inteiro como query string?
Em JavaScript: const qs = Object.entries(obj).map(([k,v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join("&"). Ou use URLSearchParams: new URLSearchParams(obj).toString(). Em axios, passe params: { } e ele codifica automaticamente.
O que é URL slug e como criar um?
Slug é a parte amigável da URL (/como-criar-um-slug-perfeito). Para criar: converta para minúsculas, substitua acentos pelos caracteres base (ã→a, é→e), substitua espaços e caracteres especiais por hífens, remova hífens duplicados. Em JS: str.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-")
Como lidar com caracteres especiais em URLs de e-mail (mailto)?