A busca `q=São Paulo` ou `Tom & Jerry` devolve 400. Esta aba aplica encodeURI, encodeURIComponent ou o decode. Caminho amigável de post é o slugify.
A API de busca recebe q=São Paulo & oferta e parte o parâmetro no &. O trabalho é percent-encode nesta aba, com os dois modos que o JavaScript já tem — e o decode.
encodeURI existe para uma URI completa: acento e espaço viram %C3%A3 e %20, mas a estrutura (/ ? & =) fica. encodeURIComponent existe para um valor: o & do “Tom & Jerry” vira %26 e o servidor junta o texto de novo. Usar o modo errado é o 400 clássico.
O erro de “São Paulo” e o erro do &
# valor de query — use component
q=São Paulo → S%C3%A3o%20Paulo
# valor com e comercial
q=Tom & Jerry → Tom%20%26%20Jerry
# URL já válida com espaço no meio — use uri
https://loja.exemplo/busca?q=olá mundo
Se você passar a URL inteira no modo component, https: vira https%3A e o navegador não navega. Se passar só o valor no modo uri, o & interno inventa um segundo parâmetro.
+ no lugar de espaço é convenção de formulário, não de component. O decode daqui troca + por espaço antes de decodeURIComponent. Duplo encode (%253A) pede uma segunda passada, não um “fuso”.
O que não é esta página
- Encurtador, bit.ly, UTM mágico.
- Slugify para caminho de post.
- Meta tags de SEO.
- Registro de domínio.
- Cole o trecho ou a URL, conforme o modo.
- Component, URI ou decode.
- Revise
%26e%20no resultado antes de colar no código.
Nada é enviado. Isto não é parecer de SEO.