Para codificar uma URL, como já foi dito anteriormente, você tem duas funções:
encodeURI()
e
encodeURIComponent()
A razão pela qual ambos existem é que o primeiro preserva a URL com o risco de deixar muitas coisas sem escape, enquanto o segundo codifica tudo o que é necessário.
Com o primeiro, você poderia copiar o URL recém-escapado na barra de endereços (por exemplo) e ele funcionaria. No entanto, seus '&' sem escape interfeririam com os delimitadores de campo, os '=' interfeririam nos nomes e valores dos campos, e os '+' pareceriam espaços. Mas para dados simples quando você deseja preservar a natureza da URL do que está escapando, isso funciona.
O segundo é tudo o que você precisa fazer para garantir que nada em sua string interfira com um URL. Ele deixa vários caracteres sem importância sem escape, para que o URL permaneça o mais legível possível por humanos, sem interferência. Um URL codificado dessa maneira não funcionará mais como um URL sem desmarcá-lo.
Portanto, se você puder dedicar algum tempo, sempre desejará usar encodeURIComponent () - antes de adicionar pares nome / valor, codifique o nome e o valor usando essa função antes de adicioná-lo à string de consulta.
Estou tendo dificuldades para encontrar razões para usar o encodeURI () - deixarei isso para as pessoas mais inteligentes.