MiServe DevTools

I tuoi adesivi

Fissa qui gli strumenti. Restano salvati in questo browser.

Codifica, decodifica e parsing di URL

Codifica o decodifica in percent-encoding un valore, un URL intero o dati di form, e scomponi qualsiasi URL nelle sue parti e nei parametri della query.

Funziona nel tuo browser. Nulla di ciò che incolli viene caricato.

Informazioni su questo strumento

Che cos'è il percent-encoding

Un URL può contenere solo un insieme limitato di caratteri ASCII, e alcuni di questi hanno un compito preciso: ? apre la query, & separa i parametri, # apre il frammento. Qualsiasi altro carattere, e qualsiasi carattere riservato usato come semplice dato, si scrive come un segno di percentuale seguito da due cifre esadecimali per ciascuno dei suoi byte. Uno spazio diventa %20, e é, che in UTF-8 occupa due byte, diventa %C3%A9. Le regole sono nella RFC 3986.

La decodifica fa il percorso inverso. Fallisce quando un segno di percentuale non è seguito da due cifre esadecimali, o quando i byte codificati non sono UTF-8 valido; lo strumento indica la sequenza e dove si trova.

Quale modalità usare

Componente è adatta a un singolo pezzo di URL: un valore della query, un segmento del percorso, un URL di redirect passato come parametro. Esegue l'escape di /, ?, & e =, così il valore non può essere scambiato per parte della struttura.

URL intero serve per un indirizzo completo in cui vanno sistemati solo gli spazi e i caratteri non ASCII. Lascia stare i caratteri strutturali, e questo significa anche che non può proteggere un valore che li contiene. Esegue l'escape anche di %, quindi se la usi su un URL già codificato lo codifica due volte, e fa l'escape delle parentesi quadre attorno a un indirizzo IPv6 nell'host. In decodifica, questa modalità lascia invariati gli escape dei caratteri strutturali, come %2F e %26.

Form è il formato application/x-www-form-urlencoded che i browser usano quando inviano un form HTML, nella query string o nel body della richiesta, e in cui lo spazio si scrive +. In decodifica, un + viene letto come spazio solo in questa modalità.

Come viene analizzato l'URL

Quando l'input, o in alternativa l'output, è un URL assoluto, lo strumento lo legge con il parser URL del browser, lo stesso che gestisce i link e fetch. La tabella elenca schema, credenziali, host, porta, percorso e frammento, e ogni parametro della query con chiave e valore decodificati. Il parser normalizza ciò che legge. In un URL web, per esempio, converte in minuscolo lo schema e l'host, risolve i segmenti . e .. del percorso e applica il percent-encoding a caratteri come gli spazi, quindi le parti possono differire leggermente da quanto digitato. Un nome host internazionalizzato in un URL http o https viene mostrato nella sua forma ASCII (Punycode), così come lo memorizza il parser.

Se l'URL non indica una porta e lo strumento conosce quella predefinita per il suo schema, mostra quella, per esempio 443 per https.

Domande

Che differenza c'è tra encodeURI ed encodeURIComponent?

encodeURI è pensata per un URL intero e lascia intatti caratteri come : / ? # & e =. encodeURIComponent è pensata per un singolo valore all'interno di un URL ed esegue l'escape anche di quei caratteri. Usa encodeURIComponent per i valori della query, altrimenti un & o un = nel valore rompe la query string.

Uno spazio va codificato come %20 o come +?

%20 è valido ovunque in un URL. Il segno + indica uno spazio solo nei dati application/x-www-form-urlencoded, il formato con cui un form HTML invia i suoi campi nella query string o nel body della richiesta. In un percorso, + è un segno più letterale.

Perché ricevo un errore quando decodifico un valore che contiene un segno di percentuale?

Il segno di percentuale apre sempre una sequenza di escape, quindi uno letterale va scritto come %25. Un testo come «100% gratis» non è un input valido in percent-encoding, perché il segno di percentuale non è seguito da due cifre esadecimali.

L'URL che incollo viene inviato a un server?

No. Codifica, decodifica e parsing avvengono in JavaScript nella scheda del tuo browser. Lo strumento non fa alcuna richiesta di rete con ciò che scrivi.

Altri strumenti in Codifica