Vai al contenuto
Quaestio

Codifica URL

Codifica il testo che deve entrare in un indirizzo web, oppure trasforma un indirizzo codificato in testo leggibile.

0 Caratteri · 0 Byte

Risultato

Scrivi qualcosa nel campo qui sopra.

Come singola parte vengono codificati anche la barra e il punto interrogativo. Senza la spunta l’impianto dell’indirizzo si conserva e vengono codificati solo i caratteri non ammessi.

Incorpora

Incorpora lo strumento nel tuo sito

Copia il codice e incollalo dove vuoi che appaia lo strumento, per esempio in un articolo del blog o in una pagina scolastica. È gratuito, il riquadro non ha pubblicità e lo strumento calcola nel browser del visitatore.

Come funziona

Gli indirizzi web possono contenere solo un insieme limitato di caratteri. Tutto il resto si scrive come un segno di percentuale seguito dal valore esadecimale del carattere, ed è per questo che uno spazio diventa %20.

La differenza fra le due modalità è cosa conti come struttura. Se codifichi una singola parte, vengono codificati anche la barra, il punto interrogativo e il segno di uguale, perché altrimenti verrebbero letti come parti dell’indirizzo.

Se codifichi un indirizzo intero, quei caratteri restano, così l’impianto dell’indirizzo si conserva. Questa modalità si usa per un indirizzo già pronto che contiene solo singoli caratteri da codificare.

Se per un parametro scegli la modalità sbagliata, chi riceve può leggere il valore come più parametri. Se un valore deve andare dopo un segno di uguale, quasi sempre va codificato come singola parte.

Il segno più è una trappola: nella parte di interrogazione di un indirizzo, storicamente il più significa uno spazio, mentre nel percorso è un vero segno più.

Le funzioni dietro le due modalità

La codifica come singola parte usa encodeURIComponent e decodeURIComponent di JavaScript, quella dell’indirizzo intero encodeURI e decodeURI, tutte e quattro definite nello standard ECMAScript. Ogni carattere da codificare viene prima trasformato in UTF-8, e ogni byte si scrive come segno di percentuale seguito da due cifre esadecimali. Come singola parte, pane & vino 3 € diventa quindi pane%20%26%20vino%203%20%E2%82%AC: il simbolo dell’euro da solo occupa tre byte. Come indirizzo intero la e commerciale resta: pane%20&%20vino%203%20%E2%82%AC. Un carattere che non si può scrivere in UTF-8, come una metà isolata di una coppia surrogata lasciata da un copia e incolla rovinato, dà un messaggio d’errore invece di un risultato.

Caratteri mai codificati

ECMAScript lascia senza codifica in entrambe le modalità le lettere A–Z e a–z, le cifre, il trattino basso, il trattino, il punto, il punto esclamativo, la tilde, l’asterisco, l’apostrofo e le parentesi tonde. La RFC 3986 considera non riservati solo trattino, punto, trattino basso e tilde; punto esclamativo, apostrofo, parentesi e asterisco fanno parte dei delimitatori riservati e in alcuni indirizzi possono avere un significato.

La codifica dell’indirizzo intero lascia stare anche punto e virgola, barra, punto interrogativo, due punti, chiocciola, e commerciale, uguale, più, dollaro, virgola e cancelletto. Le parentesi quadre invece vengono codificate, quindi un indirizzo IPv6 in un URL, come http://[::1]:8080/, diventa http://%5B::1%5D:8080/.

Segni più e moduli

I moduli si codificano come application/x-www-form-urlencoded, dove l’URL Standard del WHATWG scrive lo spazio come segno più e codifica anche punto esclamativo, apostrofo, parentesi e tilde. Lo strumento scrive sempre %20, e la decodifica non trasforma il più in spazio: a+b resta a+b. Se il testo viene da un modulo, sostituisci prima i segni più con spazi.

Errori di decodifica

La decodifica richiede UTF-8 valido. %E8, che è la è nella vecchia codifica Latin-1, dà il messaggio d’errore, mentre %C3%A8 dà è. Anche un segno di percentuale non seguito da due cifre esadecimali, come in 100%, è un errore. Nella codifica dell’indirizzo intero i delimitatori codificati restano come sono: a%2Fb resta a%2Fb, perché una barra decodificata cambierebbe la struttura dell’indirizzo.

Fonti

Come vengono verificati gli strumenti