bitlvl
IT

Codifica / decodifica URL

Codifica testo per un URL, o decodifica gli escape percentuali in testo. Scegli la modalità adatta a dove andrà il testo. Incolla un URL completo per scomporlo nelle sue parti.

I risultati e i messaggi di questo strumento sono mostrati in inglese.

Cosa fa il percent-encoding

Un URL può contenere solo un insieme limitato di caratteri ASCII, e alcuni di questi (/, ?, &, =, #) hanno un significato strutturale. Qualsiasi altro byte viene scritto come segno di percentuale e due cifre hex: uno spazio è %20, & è %26, e i byte UTF-8 di é sono %C3%A9. Le regole sono definite da RFC 3986.

Tre modalità, perché il contesto conta

ModalitàCodificaMantieneDa usare quando
Componente di queryTutto tranne A–Z a–z 0–9 - _ . ~Solo i caratteri non riservatiInserisci un valore in un parametro di query o in un segmento di percorso: ?q=…. Equivale a encodeURIComponent.
URL interoSpazi, non-ASCII, virgolette, < >…: / ? # [ ] @ & = + $ , ;Ripulisci un URL completo senza romperne la struttura. Equivale a encodeURI.
Dati di formCome componente, ma lo spazio diventa +Corpi dei form HTML (application/x-www-form-urlencoded), che è ciò che la maggior parte delle librerie HTTP invia di default.

L’errore più comune è usare la codifica da URL intero su un valore che contiene & o =: il server divide il parametro in due. Codifica i valori con le regole da componente e uniscili solo dopo.

Segni più

Nel corpo di un form (e, per convenzione, nella query string) + significa spazio, quindi decodificando dati di form bisogna trasformare + in spazio, mentre un più letterale deve essere stato inviato come %2B. In un percorso, + è semplicemente un più. L’interruttore Decodifica + come spazio copre entrambe le situazioni.

Doppia codifica

Se vedi %2520 in un URL, qualcosa ha codificato una stringa già codificata: %20 è stato trattato come testo e il suo % è diventato %25. Decodifica due volte per recuperare l’originale, poi correggi il codice che ha codificato due volte.

Domande

Cos’è %20?

Uno spazio. 0x20 è il codice ASCII dello spazio, quindi il percent-encoding lo scrive come %20. Nei dati di form può comparire come + invece.

Che differenza c’è tra encodeURI ed encodeURIComponent?

encodeURIComponent codifica ogni carattere che potrebbe essere strutturale (compresi /, ?, & e =) ed è per singoli valori. encodeURI li lascia intatti perché un URL intero resti un URL. Usa la modalità Componente di query per il primo, URL intero per il secondo.

Come vengono codificati i caratteri non inglesi?

Come i byte della loro forma UTF-8, ognuno scritto come %XX. é sono due byte (%C3%A9), 日 sono tre (%E6%97%A5). I sistemi più vecchi a volte usavano Latin-1, che dà %E9 per é; browser e API moderni usano UTF-8.

Perché la decodifica fallisce sulla mia stringa?

O un % non è seguito da due cifre hex (un segno di percentuale isolato va scritto come %25), oppure i byte codificati non formano UTF-8 valido. Il messaggio di errore dice quale dei due.

Devo codificare l’intero URL o solo i parametri?

Solo i parametri (e qualsiasi segmento di percorso che contiene testo dell’utente). Costruisci l’URL da pezzi già codificati, così i delimitatori restano non codificati.