URL
Codificatore URL
Codifica e decodifica URL in percent-encoding.
Informazioni sul percent-encoding
Il percent-encoding (chiamato anche codifica URL) sostituisce i caratteri non sicuri in un URL — spazi, &, ?, # lettere non ASCII e altro — con un % seguito dal loro valore esadecimale. È così che le query string e i segmenti di percorso trasportano testo arbitrario senza rompere la sintassi dell'URL stesso.
Non tutti i caratteri devono essere codificati, e l'insieme esatto lasciato invariato dipende dal contesto. L'RFC 3986 segna lettere, cifre e - _ . ~ come sempre sicuri; tutto il resto nell'insieme "riservato" (come / ? # &) è sicuro solo dove non sta già svolgendo un ruolo sintattico. C'è anche una particolarità specifica dei moduli: application/x-www-form-urlencoded, il formato usato dai browser per inviare i moduli HTML, codifica uno spazio come + invece che come %20 — una convenzione specifica per quel tipo di contenuto, non per gli URL in generale.
Dove lo incontrerai
- Valori di query string contenenti spazi, simboli o testo non latino
- Invii di moduli come application/x-www-form-urlencoded
- Codifica di URL di reindirizzamento o token passati come parametri URL
- Rendere sicuri percorsi di file o termini di ricerca da inserire in un link
Domande frequenti
Il percent-encoding è la stessa cosa del Base64?
No — risolvono problemi diversi. Il percent-encoding fa l'escape di caratteri specifici non sicuri all'interno di un testo altrimenti leggibile; Base64 ricodifica interi dati binari in un alfabeto fisso.
Perché alcuni caratteri rimangono invariati?
Lettere, cifre e alcuni simboli (- _ . ~) sono definiti come sempre sicuri in un URL e quindi non vengono modificati.
Questo codifica un URL intero o solo una parte?
Solo il testo che incolli come valore. Codificare un URL intero farebbe l'escape anche delle barre e dei due punti che devono restare letterali — applicalo quindi a singoli valori di query, non all'intero indirizzo.
Perché uno spazio a volte diventa + e a volte %20?
Entrambi sono validi, ma in punti diversi. Nel percorso o nella stringa di query di un URL, uno spazio è correttamente codificato come %20. La scorciatoia + è specifica del formato application/x-www-form-urlencoded con cui vengono inviati i moduli HTML, dove un + letterale deve a sua volta essere codificato come %2B per evitare ambiguità. Questo strumento produce %20, sempre corretto; se stai costruendo a mano un corpo codificato per un modulo, sostituisci gli spazi codificati con +.