Codifica e decodifica URL

Applica e rimuove la codifica percentuale negli URL, distinguendo un indirizzo intero da un singolo parametro.

Codifica
«Componente singolo» codifica anche /, ? e &: serve per un valore da inserire in un parametro. Togli la spunta per codificare un URL intero.

Perché gli URL vanno codificati

Un indirizzo web può contenere solo un insieme ristretto di caratteri. Tutto il resto — spazi, accenti, ideogrammi, emoji — va rappresentato con la codifica percentuale: ogni byte diventa un segno di percentuale seguito da due cifre esadecimali. Uno spazio diventa %20, una lettera accentata due gruppi, perché in UTF-8 occupa due byte.

Indirizzo intero o singolo valore

È la distinzione che genera più errori. Alcuni caratteri, come /, ?, & e =, negli URL hanno un significato: separano il percorso, aprono la query, dividono i parametri. Se stai codificando un indirizzo intero vanno lasciati stare, altrimenti l'indirizzo si rompe. Se stai codificando un valore da mettere dentro un parametro vanno codificati, altrimenti quel valore viene letto come se fosse struttura.

L'errore classico

Un URL passato come parametro di un altro URL senza codificare la sua query: tutto ciò che segue il primo & viene interpretato come parametro dell'indirizzo esterno, e il valore arriva troncato. È il motivo per cui i collegamenti di ritorno dopo un accesso a volte perdono metà del percorso.

Codifica non vuol dire protezione

La codifica percentuale serve a trasportare i caratteri, non a nasconderli né a rendere sicuro un valore. Un dato inserito in una pagina va comunque sanificato: codificarlo per l'URL non lo rende innocuo nell'HTML.

Domande frequenti

Quando stai codificando un indirizzo completo. Con la spunta vengono codificati anche /, ? e &, che in un indirizzo intero servono e non vanno toccati.

Il segno più appartiene alla codifica dei moduli HTML, non agli URL. Nel percorso di un indirizzo lo spazio è sempre %20; nella query entrambe le forme si incontrano, e i server di norma le accettano entrambe.

Di solito perché il testo contiene un segno di percentuale non seguito da due cifre esadecimali valide, spesso perché è già stato decodificato una volta.

Strumenti correlati