Un URL non puo trasportare un documento JSON com’e. Le parentesi graffe, le virgolette, gli spazi e tutto sopra ASCII devono essere codificati in percentuale prima di poter entrare in una stringa di query o un segmento di percorso.
Usare il codificatore e decodificatore URL JSON
Scegli Codifica o Decodifica, incolla il tuo documento, e premi Converti.
La codifica segue la stessa regola di encodeURIComponent: ogni byte UTF-8
al di fuori di un piccolo insieme sicuro diventa un escape %XX.
{"q":"a b+c","clef":"𝄞"}
codifica in %7B%22q%22%3A%22a%20b%2Bc%22%2C%22clef%22%3A%22%F0%9D%84%9E%22%7D,
corrispondendo esattamente a ciò che encodeURIComponent produce per lo
stesso documento, incluso il simbolo musicale 𝄞 come quattro escape
%XX separati, dato che richiede quattro byte in UTF-8.
L’unica opzione, e perche esiste
Attiva “Lo spazio e un segno piu” e lo stesso documento codifica lo spazio
come + invece di %20, mentre il + letterale già presente nei dati
diventa ancora %2B. Questa distinzione e tutta la ragione per cui questo
e un interruttore invece di un’ipotesi: la stringa di query di un URL e
l’invio di un modulo non concordano su cosa significa un + nudo. In un
corpo di modulo, + significa uno spazio. In ogni altra parte di un URL,
+ e un segno piu letterale. Indovinare male trasforma ogni piu nei tuoi
dati in uno spazio, o lascia ogni spazio codificato come un segno piu
letterale, che e uno dei modi piu comuni in cui un documento codificato
arriva silenziosamente corrotto dall’altra parte.
La decodifica, e perche avviene in un unico passaggio
La decodifica raccoglie ogni byte codificato in percentuale in tutta la
stringa e li decodifica come UTF-8 una volta, alla fine, invece di un
escape alla volta. Un carattere multi-byte come un emoji arriva come
diversi escape %XX separati in sequenza, quindi decodificare ognuno
individualmente e trattarlo come il proprio carattere trasformerebbe un
emoji in diversi caratteri di sostituzione. Decodificare una volta alla
fine e ciò che mantiene il testo multi-byte intatto, e permette anche
che i byte che non sono UTF-8 valido vengano segnalati come il proprio
tipo di guasto, distinto da un segno di percentuale senza cifre
esadecimali valide dopo, che decodeURIComponent non puo distinguere
da solo.
Viaggio di ritorno
Codificare l’esempio sopra con “Lo spazio e un segno piu” attivato e
poi decodificare di nuovo restituisce il documento originale esatto,
"a b+c" e il simbolo musicale entrambi intatti, che e il vero test che
la gestione del piu e dello spazio si concordano in entrambe le direzioni.