Come si usa
- 1Scegli «Codifica» o «Decodifica», poi scrivi o incolla il testo: il risultato si aggiorna mentre scrivi.
- 2Per codificare, scegli il tipo giusto: «Componente» per un singolo valore, come un termine di ricerca, «URL completo» per un indirizzo intero oppure «Dati del form» per scrivere gli spazi come
+. - 3Per decodificare una query string o i dati di un form, attiva «Interpreta + come spazio». Se il testo contiene una sequenza di escape non valida, lo strumento ne indica la posizione esatta.
- 4Per esaminare un link, incollalo in «Analizza un URL»: vedrai host, porta, percorso, frammento e tutti i parametri di query, già decodificati.
Cos’è la codifica URL?
Un URL può contenere solo un insieme limitato di caratteri ASCII. Tutto il resto – spazi, lettere accentate, emoji e caratteri con un significato speciale come &, =, ? o # – va convertito con la codifica percentuale (percent-encoding): ogni byte della forma UTF-8 del carattere viene scritto come % seguito da due cifre esadecimali. Uno spazio diventa %20, é diventa %C3%A9 e il simbolo € diventa %E2%82%AC.
La codifica impedisce che i dati vengano scambiati per parte della struttura dell’URL. Se un termine di ricerca contiene & e lo lasci così com’è, il server divide il termine in due parametri; scritto come %26, invece, resta parte del valore.
Componente, URL completo o dati del form?
La codifica «Componente» – encodeURIComponent di JavaScript – codifica tutto tranne lettere, cifre e - _ . ! ~ * ' ( ). Usala per ogni singolo pezzo che inserisci in un URL: il valore di un parametro, un segmento del percorso, la destinazione di un reindirizzamento.
La codifica «URL completo» – encodeURI – lascia intatti i caratteri che strutturano un URL, come : / ? # & =, e codifica solo spazi, caratteri non ASCII e simboli non sicuri. Usala per un URL intero già composto correttamente, mai per singoli valori.
La codifica dei form (application/x-www-form-urlencoded) è il formato che i browser usano quando invii un form HTML ed è quello prodotto da URLSearchParams. Funziona come la codifica «Componente», ma gli spazi diventano +. Ecco perché nella maggior parte delle query string + significa spazio – e perché un vero segno più va scritto come %2B.
Perché la decodifica può non riuscire
Un % deve essere sempre seguito da due cifre esadecimali. Un testo come 100% sicuro non è una codifica percentuale valida: il segno di percentuale avrebbe dovuto essere scritto come %25.
Anche i byte rappresentati dalle sequenze di escape devono formare UTF-8 valido. caff%E8 è il modo in cui i sistemi più vecchi codificavano «caffè» in Windows-1252 o ISO-8859-1 – in UTF-8, è diventa %C3%A8. Il decodificatore evidenzia la sequenza esatta che non va, così puoi capire se il testo è stato troncato o codificato con un altro set di caratteri.
Domande frequenti
Cosa significa %20 in un URL?
%20 è uno spazio codificato. Gli spazi non sono ammessi negli URL, quindi si scrivono come %20 – oppure come + nelle query string e nei dati dei form. In entrambi i casi la decodifica restituisce un normale spazio.
Gli spazi vanno codificati come %20 o come +?
Nel percorso usa sempre %20. Nella query string, in pratica, funzionano entrambi, perché i server decodificano i dati dei form interpretando + come spazio. %20 è sicuro ovunque, mentre + significa spazio solo nelle query string e nel corpo dei form.
Qual è la differenza tra encodeURI ed encodeURIComponent?
encodeURIComponent codifica anche i caratteri riservati come / ? & = #, quindi è la funzione giusta per i singoli valori. encodeURI li lascia intatti, così un URL completo continua a funzionare. Usare encodeURI sul valore di un parametro è un errore comune: una & all’interno del valore lo divide in due parametri.
Perché ricevo l’errore «URI malformed»?
decodeURIComponent di JavaScript genera questo errore quando un % non è seguito da due cifre esadecimali o quando i byte codificati non sono UTF-8 valido. Incolla il testo nel decodificatore qui sopra: ti mostra quale sequenza causa l’errore e in quale posizione.
Quali caratteri non serve codificare in un URL?
Le lettere A–Z e a–z, le cifre 0–9 e i caratteri - . _ ~ non richiedono mai la codifica. I caratteri riservati come : / ? # [ ] @ ! $ & ' ( ) * + , ; = sono ammessi dove hanno il loro significato speciale, ma vanno codificati quando fanno parte dei dati.