Codificare una ricerca
hello world & more
hello%20world%20%26%20more
Gli spazi diventano %20 e la & diventa %26, così non viene scambiata per un separatore di parametri.
Codifica e decodifica in sicurezza i componenti degli URL.
Ultimo aggiornamento
Coddy ti insegna facendoti scrivere codice vero nel browser: lezioni interattive, feedback immediato e aiuto dall'AI quando ti blocchi.
Un URL encoder (detto anche percent-encoder o URI encoder) sostituisce i caratteri riservati o non sicuri negli URL con % seguito da due cifre esadecimali. Gli sviluppatori lo usano per costruire query string, fare l'escape dei segmenti di percorso, condividere URL con spazi o caratteri non ASCII e fare debug dei redirect.
Gli URL sono limitati a un piccolo insieme di caratteri ASCII. Tutto ciò che ne resta fuori (spazi, accenti, emoji o simboli riservati come ?, #, &, = quando sono usati come dati) va codificato in percentuale per arrivare intatto dal browser al server.
JavaScript offre due funzioni di codifica: encodeURI (mantiene la struttura dell'URL: /, ?, #, &) e encodeURIComponent (codifica tutto ciò che è riservato). Usa encodeURIComponent per i *valori* che inserisci nelle query string ed encodeURI per gli *URL completi* che vuoi mantenere funzionanti.
% più due cifre esadecimali: per esempio, uno spazio diventa %20.: / ? # & = +) hanno un significato nella struttura dell'URL. Vanno codificati quando sono usati come dati, non come separatori.encodeURI lascia intatta la struttura dell'URL; encodeURIComponent codifica tutto ciò che è riservato: usa quella giusta al posto giusto.Scegli Codifica se hai testo grezzo e vuoi renderlo sicuro per un URL. Scegli Decodifica se hai una stringa con % e vuoi riottenere il testo originale.
Scegli encodeURIComponent (codifica tutto ciò che è riservato) per i valori delle query string; scegli encodeURI (mantiene la struttura) per gli URL completi.
Incolla il testo grezzo o l'URL codificato. Funziona anche con input su più righe, per decodificare in blocco.
Copia il valore codificato o decodificato. La conversione gira in locale nel tuo browser, quindi eventuali dati riservati negli URL restano sul tuo computer.
I caratteri che vedrai codificati più spesso, con la loro forma in percent-encoding. La semantica dei caratteri riservati viene dall'RFC 3986.
| Carattere | Codificato | Perché |
|---|---|---|
| spazio | %20 | Gli spazi non sono ammessi negli URL |
! | %21 | Riservato da alcuni server |
# | %23 | Indica l'inizio di un frammento |
$ | %24 | Carattere riservato |
& | %26 | Separa i parametri della query |
+ | %2B | Significa spazio nei body form-encoded |
/ | %2F | Separatore dei percorsi |
: | %3A | Separa schema e host |
= | %3D | Separa chiave e valore nella query string |
? | %3F | Indica l'inizio della query string |
@ | %40 | Separa userinfo e host |
| byte UTF-8 | %C3%A9 | Ogni byte non ASCII viene codificato |
hello world & more
hello%20world%20%26%20more
Gli spazi diventano %20 e la & diventa %26, così non viene scambiata per un separatore di parametri.
café
caf%C3%A9
é corrisponde alla sequenza di byte UTF-8 0xC3 0xA9, quindi la forma codificata ha *due* gruppi %XX per quel singolo carattere.
https://example.com/path?q=hello world
https://example.com/path?q=hello%20world
https%3A%2F%2Fexample.com%2Fpath%3Fq%3Dhello%20world
encodeURI lascia intatta la struttura dell'URL (barre, ?, =). encodeURIComponent codifica tutto ciò che è riservato: usala sui valori che inserisci in una query string, mai su un URL intero.
encodeURI per i valori delle query string: & e = sopravvivono alla codifica e rompono il parsing dei parametri.%2520 al posto di %20 è il segno classico di un bug di doppia codifica.+ significa spazio nei body application/x-www-form-urlencoded, ma è un + letterale nel percorso o nella query di un URL.decodeURIComponent accetti qualsiasi stringa: lancia un errore se trova un % isolato non seguito da due cifre esadecimali.% seguito da due cifre esadecimali.encodeURI mantiene i caratteri strutturali dell'URL (/, ?, #, &, =, +). encodeURIComponent li codifica tutti, ed è quello che ti serve per i singoli *valori* inseriti in un URL: valori dei parametri della query, segmenti di percorso, frammenti. Consulta i riferimenti MDN per encodeURI ed encodeURIComponent.%20?%20, la codifica percentuale del carattere spazio ASCII (0x20 in esadecimale).decodeURI, decodeURIComponent o qualsiasi URL decoder annulla il percent-encoding e restituisce i caratteri originali.