Informazioni su questo strumento
Questo codificatore / decodificatore di URL gratuito codifica il testo in percentuale perché possa essere usato senza rischi in una URL o in una query string, e riporta una URL codificata a testo leggibile.
Gestisce correttamente UTF-8, quindi lettere accentate, emoji e alfabeti non latini vengono codificati e decodificati senza corrompersi. Tutto avviene nel tuo browser: non viene caricato nulla.
Che cos'è la codifica percentuale
Una URL può contenere soltanto un piccolo insieme di caratteri. Tutto il resto — spazi, virgolette, &, #, ?, lettere accentate, qualunque cosa in cinese o in arabo — va riscritto prima di poter viaggiare.
La codifica percentuale lo fa sostituendo un carattere con un % seguito dal suo valore di byte in esadecimale. Uno spazio diventa %20. Una e commerciale diventa %26. Un punto interrogativo diventa %3F. È la stessa idea del Base64 — rendere accettabili dati scomodi per un canale schizzinoso — ma carattere per carattere, così il risultato resta in gran parte leggibile.
Poiché a essere codificati sono i byte, un carattere che in UTF-8 occupa più di un byte produce più di una sequenza. La é occupa due byte e diventa %C3%A9. Un carattere cinese di solito ne occupa tre e dà tre sequenze. Un emoji ne occupa quattro. Ecco perché le URL codificate con testo non inglese sembrano così lunghe.
Perché è importante: il problema della `&`
Ecco l'errore che questo strumento serve a evitare, e quasi tutti lo commettono una volta.
Una query string separa i suoi valori con & e =:
/cerca?q=caffe&pagina=2
Ora supponiamo che qualcuno cerchi Bed & Breakfast. Inserito così com'è:
/cerca?q=Bed & Breakfast&pagina=2
Il server vede adesso tre parametri: q vale Bed , poi un parametro senza senso Breakfast, poi pagina. La ricerca restituisce in silenzio la cosa sbagliata. Codifica prima il valore e funziona:
/cerca?q=Bed%20%26%20Breakfast&pagina=2
Da qui la regola: codifica ogni valore, non l'intera URL. La & e il = che strutturano la query string devono restare grezzi. La & all'interno di un valore no.
Codificare un valore o un'intera URL
È la distinzione su cui si inciampa, ed è il motivo per cui in JavaScript esistono due funzioni diverse.
encodeURIComponent codifica quasi tutto, compresi /, ?, #, & e =. Usala per un singolo pezzo di URL: un termine di ricerca, un nome di file, una destinazione di reindirizzamento, un token. È ciò che serve nella maggior parte dei casi, ed è ciò che fa questo strumento.
encodeURI lascia stare i caratteri strutturali, perché presuppone che le venga passata una URL completa e già corretta di cui ripulire soltanto i caratteri non ammessi. Usala su un'intera URL, mai su un singolo valore.
Se codifichi un'intera URL con la versione «component», ogni / diventa %2F e l'indirizzo smette di funzionare. Se codifichi un valore con la versione «URI», la tua & passa indenne e rompe la query string. Sapere quale intendevi è tutto il trucco.
Non è l'escaping HTML
Codifica percentuale ed escaping HTML si somigliano e risolvono problemi diversi.
La codifica percentuale (%20, %26) rende sicuro un testo dentro una URL. L'escaping HTML (&, <) lo rende sicuro dentro un documento HTML. Una URL stampata su una pagina può richiedere entrambi, in quest'ordine: prima codificare per la URL, poi fare l'escaping del risultato per l'HTML.
E una stranezza nota: il + a volte significa spazio. È un residuo dei moduli HTML, dove application/x-www-form-urlencoded usa + al posto di %20. Quasi tutti i server accettano entrambi in una query string, ma un + in un percorso significa un vero segno più. Se uno spazio ricompare come + dove non te lo aspettavi, la causa è un encoder di moduli.
Come si usa
- Incolla il tuo testo o la tua URL nel campo
- Codifica o Decodifica con i pulsanti
- Scambia per riportare il risultato nell'input
- Copia il risultato
Buono a sapersi
- Codifica i valori, non le URL intere. Passare un indirizzo completo in un encoder trasforma ogni / in %2F e lo rompe.
- Non codificare mai due volte. Il % viene a sua volta codificato come %25, quindi un secondo passaggio trasforma %20 in %2520 e lo spazio è perduto. È la causa più comune di un link misteriosamente rotto.
- I caratteri riservati hanno un significato — tra questi :, /, ?, #, @, &, =, + e $. Sono leciti in una URL, ma vanno codificati quando compaiono dentro un valore.
- I caratteri non riservati non vengono mai codificati: A–Z, a–z, 0–9, -, _, . e ~.
- Le maiuscole nell'esadecimale non contano. %3f e %3F sono identici; le maiuscole sono la convenzione.
- Un % isolato non è valido. Se la decodifica fallisce, cerca un % non seguito da due cifre esadecimali: spesso è il segno di una stringa troncata.
Domande frequenti
Che cosa significa %20 in una URL?
È uno spazio. Lo spazio non è ammesso in una URL, quindi viene codificato in percentuale come %20: un % seguito da 20, il valore esadecimale del byte di uno spazio. A volte vedrai uno spazio scritto come +, eredità della codifica dei moduli; entrambi sono compresi in una query string, ma solo %20 è corretto in un percorso.
Devo codificare l'intera URL o solo una parte?
Solo le parti. Codifica ogni valore che inserisci *dentro* una URL — un termine di ricerca, un nome di file, un indirizzo di reindirizzamento — e lascia intatti ://, /, ?, & e =, che danno alla URL la sua struttura. Codificare una URL completa trasforma le sue barre in %2F e le impedisce di risolversi.
Perché il mio link si è rotto dopo la codifica?
Quasi sempre per doppia codifica. Il carattere % viene a sua volta codificato come %25, quindi codificare una stringa già codificata trasforma %20 in %2520. Il decodificatore ti restituisce allora un %20 letterale invece di uno spazio. Decodifica una volta per vedere che cosa hai davvero prima di ricodificare.
Perché una lettera accentata diventa più codici %?
Perché la codifica percentuale lavora sui byte, non sulle lettere. In UTF-8 la é occupa due byte e per questo diventa %C3%A9. Gran parte dei caratteri cinesi, giapponesi e coreani ne occupa tre e dà tre sequenze; gli emoji ne occupano quattro. Non c'è nulla di sbagliato: è semplicemente quanto pesa il carattere.
Qual è la differenza tra codifica URL ed escaping HTML?
Proteggono luoghi diversi. La codifica URL (%26) rende sicuro un testo dentro un indirizzo web. L'escaping HTML (&) lo rende sicuro dentro una pagina HTML. Un link stampato su una pagina può richiedere entrambi, in quest'ordine. Usare l'uno dove serve l'altro lascia irrisolto il problema di partenza.
Il mio testo viene inviato a un server?
No. Codifica e decodifica avvengono entrambe nel tuo browser, quindi nulla di ciò che incolli lascia il tuo dispositivo. Lo strumento continua a funzionare con la connessione spenta.
Strumenti correlati
- Codifica / decodifica Base64 — l'altra codifica che si incontra di continuo in token e data-URL
- Formattatore JSON — sistemare e controllare il JSON che spesso viaggia in quelle query string
- Decodificatore JWT — leggere un token arrivato in una URL
- Estrai email e URL — tirare fuori ogni link da un blocco di testo