Uma URL nao pode transportar um documento JSON como esta. Chaves, aspas, espacos e tudo acima de ASCII tem que ser codificado em porcentagens antes de poder entrar em uma string de consulta ou segmento de caminho.
Usando o codificador e decodificador de URL de JSON
Escolha Codificar ou Decodificar, cole seu documento, e pressione Converter.
A codificacao segue a mesma regra que encodeURIComponent: cada byte UTF-8
fora de um pequeno conjunto seguro se torna um escapamento %XX.
{"q":"a b+c","clef":"𝄞"}
codifica para %7B%22q%22%3A%22a%20b%2Bc%22%2C%22clef%22%3A%22%F0%9D%84%9E%22%7D,
correspondendo exatamente ao que encodeURIComponent produz para o mesmo
documento, incluindo o simbolo musical 𝄞 como quatro escapamentos
%XX separados, ja que ele usa quatro bytes em UTF-8.
A unica opcao, e por que existe
Ative “O espaco e um sinal de mais” e o mesmo documento codifica o espaco
como + em vez de %20, enquanto o + literal ja presente nos dados
ainda se torna %2B. Essa distincao e toda a razao pela qual isso e um
interruptor em vez de uma suposicao: a string de consulta de uma URL e o
envio de formulario discordam sobre o que um + solto significa. No corpo
de um formulario, + significa um espaco. Em todas as outras partes de
uma URL, + e um sinal de mais literal. Errar na suposicao transforma
cada mais em seus dados em espaco, ou deixa cada espaco codificado como
um sinal de mais literal, que e uma das formas mais comuns pelas quais
um documento codificado chega silenciosamente corrompido do outro lado.
A decodificacao, e por que acontece em uma unica passagem
A decodificacao coleta cada byte escapado em porcentagens em toda a string
e os decodifica como UTF-8 uma vez, ao final, em vez de um escapamento
por vez. Um caractere multi-byte como um emoji chega como varios
escapamentos %XX separados em sequencia, entao decodificar cada um
individualmente e trata-lo como seu proprio caractere transformaria um
emoji em varios caracteres de substituicao. Decodificar uma vez ao final
e o que mantem o texto multi-byte intacto, e tambem permite que bytes que
nao sao UTF-8 valido sejam reportados como seu proprio tipo de falha,
distinto de um sinal de porcentagem sem digitos hexadecimais validos
depois, que decodeURIComponent nao consegue distinguir sozinho.
Viagem de ida e volta
Codificar o exemplo acima com “O espaco e um sinal de mais” ativado e
depois decodificar de volta retorna o documento original exato, "a b+c"
e o simbolo musical ambos intactos, que e o verdadeiro teste de que o
tratamento de mais e espaco concordam em ambas as direcoes.