← Tutti gli strumenti

Codifica e Decodifica URL Online

Esegui percent-encoding e decodifica di URL e testo nel browser. Comprendi i caratteri riservati, encodeURI e encodeURIComponent, tutto elaborato localmente.

Codifica e decodifica URL, spiegata agli sviluppatori

Digita uno spazio in un URL, o una parola in caratteri cirillici, o una e commerciale che appartiene ai tuoi dati e non all'indirizzo stesso, e qualcosa deve cedere. Il web garantisce un trasporto sicuro solo per un insieme ristretto e prevedibile di caratteri ASCII. Tutto il resto deve essere racchiuso in un formato concordato da router, server e browser. Quel formato è la percent-encoding, più comunemente chiamata codifica URL, e questa pagina ti consente di convertire testo in entrambe le direzioni direttamente nel tuo browser.

Percorso URL luminoso che si dissolve in caratteri esadecimali percent-encoded su sfondo blu indaco scuro
Un percorso URL che si trasforma in triplette percent-encoded sicure.

Cosa è effettivamente la percent-encoding

La regola è meccanica e facile da seguire. Qualsiasi carattere che non può apparire letteralmente viene sostituito da un segno % seguito da due cifre esadecimali che indicano il valore del byte di quel carattere. Uno spazio diventa %20. Un segno più diventa %2B. Il cancelletto diventa %23. Quando un carattere corrisponde a più byte, come avviene per la maggior parte del testo non ASCII in UTF-8, si ottengono semplicemente più triplette in sequenza: il simbolo dell'euro diventa %E2%82%AC. La decodifica inverte il processo, riconvertendo ogni tripletta nel suo byte originale.

Questa convenzione è definita nella specifica URI (RFC 3986) ed è deliberatamente noiosa. La noia è il punto. Ogni client e server HTTP che si comporta correttamente implementa le stesse regole, quindi un link correttamente codificato in un posto arriva intatto ovunque.

Perché deve esistere

Gli URL trasportano due tipi di caratteri con compiti molto diversi. I caratteri riservati come /, ?, #, &, = e : sono strutturali. Dicono a un parser dove finisce il percorso e inizia la query string, o dove si ferma un parametro e inizia il successivo. Se i tuoi dati effettivi contengono uno di quei simboli, deve essere codificato in modo che il parser non lo scambi per punteggiatura. Un riferimento d'ordine come A&B/2024 inserito grezzo in una query string verrebbe interpretato come due parametri e un segmento di percorso.

Poi ci sono i caratteri non sicuri e non ASCII: spazi, virgolette, parentesi angolari, lettere accentate, emoji, qualsiasi cosa al di fuori del semplice range ASCII. Questi non dovrebbero apparire letteralmente in un URL, sia perché vengono alterati in transito sia perché non hanno una rappresentazione definita. Codificarli mantiene i link puliti e prevedibili invece di lasciare il risultato al caso.

Dove lo incontri nel lavoro reale

Le query string sono il caso classico. Ogni valore che aggiungi a ?chiave=... dovrebbe essere codificato perché l'input dell'utente non possa rompere la struttura. Lo stesso vale per i form HTML inviati come application/x-www-form-urlencoded, dove il browser codifica automaticamente i valori dei campi (e, per convenzione storica, trasforma gli spazi in + invece di %20). Lo incontri anche quando costruisci link che puntano a pagine con titoli non latini, quando componi richieste API a mano, quando passi destinazioni di reindirizzamento come parametri, e quando stai debuggando perché una richiesta che sembra corretta nella barra degli indirizzi arriva corrotta al server.

Flusso di dati che scorre in sicurezza attraverso un tubo luminoso ciano e oro che simboleggia la codifica URL
La codifica permette a testo arbitrario di viaggiare in sicurezza attraverso la rete.

encodeURI a confronto con encodeURIComponent

JavaScript include due encoder, e scegliere quello sbagliato è un bug comune. La differenza riguarda l'ambito. encodeURIComponent è per un singolo dato, come un valore di query. Codifica quasi tutto, inclusi i caratteri riservati /, ?, :, @, &, =, + e #. È esattamente quello che vuoi quando i dati possono contenere quei simboli come testo ordinario.

encodeURI è per un intero indirizzo che intendi mantenere funzionante. Lascia intatti i caratteri strutturali, quindi le barre, i due punti e i punti interrogativi che tengono insieme l'URL sopravvivono. Usalo quando hai un URL completo e vuoi solo pulire spazi o caratteri non ASCII; usa encodeURIComponent ogni volta che stai inserendo un valore all'interno di un URL più grande. Una semplice regola pratica: codifica il link intero con encodeURI, codifica le parti che inserisci con encodeURIComponent.

Tutto rimane sul tuo dispositivo

Questo strumento viene eseguito interamente nel tuo browser. Il testo che incolli viene codificato o decodificato localmente con le stesse routine standard e non viaggia mai verso un server, il che lo rende sicuro per token, parametri firmati o qualsiasi altra cosa che preferiresti non inviare in rete. Se lavori con altre trasformazioni di testo, il convertitore Base64 è proprio accanto, e puoi navigare l'insieme completo degli strumenti per sviluppatori per altri aiuti quotidiani.

Domande frequenti

Cosa significa %20 in un URL?

È uno spazio codificato. Il carattere spazio non è consentito letteralmente in un URL, quindi viene sostituito da un segno percentuale e dal valore esadecimale 20, che è il valore byte di uno spazio.

Perché a volte vedo un segno più invece di %20?

I dati di form HTML di tipo application/x-www-form-urlencoded codificano gli spazi con un segno più per convenzione storica. In un normale percorso o query, uno spazio è codificato come %20. Entrambi si decodificano in uno spazio nel loro contesto appropriato.

Quando dovrei usare encodeURIComponent invece di encodeURI?

Usa encodeURIComponent per un singolo valore che stai inserendo in un URL, come un parametro di query, perché codifica anche i caratteri riservati. Usa encodeURI per un indirizzo completo quando vuoi preservare le barre, i due punti e i punti interrogativi che lo tengono insieme.

La codifica URL cambia il significato dei miei dati?

No. La codifica è completamente reversibile. Decodificando il risultato si ottiene esattamente il testo originale, byte per byte, purché venga usato lo stesso set di caratteri su entrambi i lati.

Come vengono gestiti i caratteri non ASCII come le lettere accentate o le emoji?

Vengono prima convertiti in byte UTF-8, poi ogni byte diventa la propria tripletta percentuale. Una singola lettera accentata o emoji può quindi espandersi in più triplette nell'output codificato.

Il mio testo viene inviato a un server quando uso questo strumento?

No. La codifica e la decodifica avvengono interamente nel tuo browser. Niente di ciò che incolli viene caricato, quindi è sicuro usarlo con stringhe private o sensibili.