Vai al contenuto principale
CuteJSON
↑↓ Naviga Enter Seleziona Esc Chiudi

Come codificare URL JSON per una stringa di query

Pubblicato 2 min di lettura Di Akash Kinkar Pandey

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.

Torna a tutti i post