Strumenti URL
Codifica e decodifica degli URL: qual è la differenza?
Una guida alla codifica e decodifica degli URL, operazioni inverse da applicare ai singoli componenti.
Di Vigneshwaran Vijayakumar, sviluppatore ed editore | | Revisionato secondo la politica editoriale di ClockTools
Sommario
La codifica degli URL converte i caratteri non ammessi direttamente o dotati di un significato particolare in un componente URL in triplette percentuali; la decodifica riconverte le triplette valide in caratteri leggibili. Codifica i dati grezzi prima di inserirli in un componente. Decodifica un valore già codificato quando devi esaminarlo o utilizzarlo. Il Codificatore URL di ClockTools e il Decodificatore URL permettono di provare entrambe le operazioni senza modificare il testo originale.
Scegli l'operazione in base all'input
Se l'input contiene dati leggibili come summer shoes & bags, codificalo prima di inserirlo nel valore di una query. Se contiene già sequenze come %20 e ti servono i caratteri originali, decodificalo una sola volta. Lo standard URL WHATWG definisce gli insiemi di caratteri da codificare per l'analisi e la serializzazione degli URL; RFC 3986 spiega la struttura delle triplette percentuali e i caratteri riservati.
| Hai | Ti serve | Operazione |
|---|---|---|
| Valore grezzo di una query | Componente utilizzabile in un URL | Codifica |
| Triplette percentuali | Valore leggibile | Decodifica |
| URL completo già analizzato | Un campo modificato | Modifica il componente, poi serializza l'URL |
La codifica non è crittografia. Rende la sintassi inequivocabile, ma non nasconde le informazioni sensibili.
Segui un esempio reversibile
Parti da summer shoes & bags. La codifica del componente produce summer%20shoes%20%26%20bags. Gli spazi diventano %20 e la e commerciale diventa %26, così viene trattata come un dato e non come un separatore. Decodificando il risultato una sola volta si ottiene di nuovo la frase originale.
Nel controllo sullo strumento online di ClockTools, un campione di 74 caratteri è diventato una stringa di 102 caratteri con 14 sequenze di escape in modalità URI Component. Questi conteggi valgono soltanto per quel campione: input diversi producono totali diversi.
Rispetta i confini tra i componenti URL
Un URL contiene parti con sintassi diverse: schema, host, percorso, query e frammento. Il procedimento più sicuro è analizzare l'URL, modificare il valore desiderato e poi serializzarlo usando l'API del proprio ambiente. Codificare un intero URL già composto può trasformare in sequenze di escape separatori come :, /, ? e & che dovrebbero conservare la loro funzione strutturale.
Il carattere spazio richiede particolare attenzione. La codifica percentuale generica lo rappresenta come %20; la serializzazione delle query secondo le regole dei moduli HTML può invece usare +. La guida alla codifica URL dello spazio tratta questo specifico problema di interoperabilità; qui ci concentriamo sulla scelta dell'operazione e del componente e sulla trasformazione inversa.
Evita la doppia codifica
La doppia codifica si verifica quando un testo già codificato passa di nuovo attraverso un codificatore. Per esempio, %20 può diventare %2520 perché % viene codificato come %25. Tieni traccia di quali valori sono grezzi e quali sono codificati, esegui la codifica in un solo punto di passaggio e decodifica soltanto il numero di volte richiesto dal contratto dei dati. RFC 3986 avverte che le stringhe con codifica percentuale non vanno codificate o decodificate più di una volta senza un motivo preciso.
Durante il debug, copia nello strumento il componente più piccolo, decodificalo una volta e confronta il risultato con il valore grezzo atteso. Non incollare mai segreti, token o URL privati in uno strumento di cui non ti fidi.
Domande frequenti
Qual è la differenza tra codifica e decodifica degli URL?
La codifica trasforma i caratteri in una rappresentazione adatta alla trasmissione; la decodifica riconverte le triplette percentuali valide in caratteri leggibili.
Devo codificare un URL completo o soltanto un componente?
Di solito va codificato il valore o il componente da inserire, non un URL già composto con separatori che hanno una funzione precisa.
Perché un URL a volte contiene %2520?
Di solito significa che %20 è stato codificato una seconda volta: il segno di percentuale è diventato %25, producendo un valore con doppia codifica.
Il segno più equivale sempre a uno spazio?
No. Alcuni parser di query con codifica per moduli interpretano + come uno spazio, mentre la codifica percentuale generica degli URL usa %20.

