Questo documento sfrutta i fogli di stile (CSS); senza il supporto dei fogli di stile, benché il testo sia comunque visualizzabile, non saranno visibili ne le formattazioni ne la struttura della pagina.

Un primo sguardo agli URL

Lo scopo fondamentale degli URL è identificare in modo univoco una risorsa esistente e raggiungibile attraverso strumenti di comunicazione basati su internet.

Questo documento può essere considerato una introduzione per principianti sulla formazione e l'utilizzo degli URL.

Informazioni generali
Autore Giacomo Mengucci
Licenza FDL
Ultimo Aggiornamento 08/04/2007

Sommario dei contenuti

  1. Uno schema semplificato della comunicazione in internet
  2. La sintassi generale di un URL
    1. L'indicazione del protocollo di comunicazione
    2. L'identificazione univoca dell'host
    3. La risorsa da acquisire
      1. La struttura ad albero rovesciato di un file system
      2. La directory radice del server http
      3. Riferimento implicito ad una risorsa e al protocollo http
      4. Anche la directory è una risorsa
      5. I file non HTML come risorse
  3. Approfondire la sintassi dello scheme_specific_part
  4. Cenni sugli URL non collegati al protocollo http
    1. Il servizio FTP: trasferimento file
  5. Utilizzare gli URL nei sorgenti HTML
    1. I documenti ipertestuali e il linguaggio HTML
    2. URL con percorsi assoluti
    3. URL con percorsi relativi
  6. Quali caratteri utilizzare per formare gli URL

Uno schema semplificato della comunicazione in internet

Per capire l'importanza degli URL è necessario conoscere a grandi linee come avviene la comunicazione fra le varie macchine collegate in internet.

Una macchina collegata sulla rete globale internet prende il nome di host.
Gli host collegati sono milioni, ciascuno dei quali può mettere a disposizione delle risorse.
Per risorsa si può intendere qualsiasi file - documento, ma anche qualsiasi servizio fornito da appositi programmi (posta elettronica, gruppi di discussione, trasferimento file ecc.).

Ci sono tre domande fondamentali a cui rispondere per capire come funziona la comunicazione via internet:

Identificazione univoca degli host

Ogni host collegato sulla rete globale è identificato univocamente da un numero che è detto indirizzo IP; non è lo scopo di questo scritto spiegare perché l'identificazione è possibile grazie all' indirizzo IP, ma fin da ora si può affermare che una parte dell'URL è in concreto "tradotta" in tale indirizzo numerico.

La lingua con cui gli host comunicano fra loro

Gli host che "parlano" fra loro si capiscono grazie ad una serie di protocolli di comunicazione, cioè grazie ad un complesso di regole standard che definiscono una lingua comune.
I protocolli di comunicazione sono molteplici e differiscono l'uno dall'altro a seconda delle risorse che si vogliono acquisire su internet.
Ad esempio, se lo scopo della comunicazione è la così detta navigazione, le risorse acquisite sono principalmente documenti ipertestuali e il protocollo di comunicazione è il protocollo http.
I documenti ipertestuali non sono altro che file scritti in appositi linguaggi di marcatura, quali l' HTML o l'XHTML.
Una parte dell'url serve ad indicare quale sia il protocollo di comunicazione da utilizzare. (Vedi la sezione[sub:protocollo-comunicazione])

Le modalità di comunicazione fra gli host: il paradigma client - server

Il meccanismo generale di comunicazione è molto semplice: c'è un host che elabora e spedisce una richiesta e c'è un host che elabora e spedisce una risposta alla richiesta.
L'host che elabora e spedisce la richiesta è detto client, l'host che elabora e spedisce una risposta è detto server.
Per essere più precisi le richieste sono elaborate da un programma client, che riceverà anche le risposte, mentre le risposte sono elaborate da un programma server, che riceverà anche le richieste.
Nell'attività di navigazione, il programma client è detto browser, il programma server è detto server http o anche server WEB.

Sintassi generale di un URL

La sintassi di alto livello di un URL è composta da due parti separate dal carattere :

scheme:scheme_specific_part

Queste due parti si formano in modo diverso a seconda della risorsa a cui si vuol far riferimento con l'URL.

In questo scritto tratteremo in modo approfondito la formazione degli URL utilizzati per la navigazione WEB, mentre accenneremo alla formazione degli URL per l'acquisizione di altri servizi.
I concetti e le regole qui apprese e relative alla formazione degli URL, saranno preziosi anche per chi si voglia cimentare nella realizzazione dei documenti ipertestuali attraverso i linguaggi di marcatura HTML o XHTML.

L'indicazione del protocollo di comunicazione

La parte chiamata scheme identifica il protocollo di comunicazione utilizzato per reperire una risorsa specifica e quindi indirettamente individua la tipologia di risorsa a cui si vuol far riferimento con l'URL.

Il protocollo utilizzato per la navigazine WEB e quindi per i documenti ipertestuali, è il protocollo http.

Esempio: Dove indicare il protocollo di comunicazione
http:scheme_specific_part

L'identificazione univoca dell'host

Lo scheme_specific_part degli URL http ha due funzioni fondamentali: la prima è quella di identificare l'host a cui inviare la richiesta; la seconda è quella di individuare in modo specifico la risorsa che il server dovrebbe restituire con la sua risposta.

La parte scheme_specific_part di un URL http, può essere ulteriormente disaggregata in questo modo:

//autorità/percorso

In questa sezione sarà approfondito il significato di //autorità, come parte in cui inserire un nome di dominio.

Esempio: Nome di dominio
http://www.jacknake.org

Il nome di dominio, o anche nodo, identifica l'host su cui è avviato, ed è in ascolto, il server http, che risponderà alle nostre richieste.

Il nome di dominio è formato da almeno due parti ciascuna separata da un punto (jacknake.org); le parti che formano il nome di dominio possono essere anche più di due, ma comunque l'ultima rappresenta un codice, normalmente di due o tre lettere, che identifica, o la regione geografica in cui è situato il server (.it per Italia, .de per Germania .fr per Francia ecc.), oppure il tipo di sito a cui ci connettiamo (.com per sito commerciale, .org per sito di organizzazioni non governative senza scopo di lucro, .edu per sito di università ecc.).

In realtà dietro al nome di dominio si cela un indirizzo IP; non è lo scopo di questo scritto spiegare come i nomi di dominio vengono risolti in indirizzi IP.

La risorsa da acquisire

La seconda importante funzione dello scheme_specific_part è quella di indicare la risorsa da acquisire, in particolare questo compito è svolto dalla parte /percorso

Esempio: La risorsa come un file
http://www.jacknake.org/index.html

Il file da acquisire è normalmente un documento ipertestuale di tipo HTML che sarà spedito dal server in risposta alla richiesta ricevuta; in particolare il file ricevuto sarà elaborato dal programma che ha fatto la richiesta, il quale potrà, ad esempio, visualizzarlo all'interno di una finestra, oppure avviare una procedura di download sulla nostra macchina.

Il tipo di elaborazione eseguita sul file ricevuto dipende dal programma che fa la richiesta e dal tipo di file richiesto; normalmente il programma che fa la richiesta è un browser, il file richiesto è di tipo HTML e quindi l'elaborazione consiste nella visualizzazione dei contenuti del file secondo i significati propri dei vari marcatori HTML.

L' Host su cui gira il server è, come già detto, un computer che, con tutta probabilità, avrà centinaia di directory, all'interno delle quali ci potranno essere migliaia di file.
La questione importante da capire è come faccia il server a conoscere in quale directory si trovi il file che gli è stato chiesto dal client.
A questo scopo è necessaria una digressione sull'organizzazione gerarchica ad albero rovesciato delle directory all'interno di un filesystem.
Il filesystem può essere considerato come un modo di organizzare e gestire logicamente i file e le cartelle in un qualsiasi supporto di memorizzazione.

La struttura ad albero rovesciato di un file system

La maggior parte dei filesystem hanno una directory radice da cui tutto parte, nel senso che è da questo punto che vengono create ulteriori directory in cui memorizzare i file.

La directory radice, in quanto tale, può contenere file o altre directory; ciascuna delle directory contenute in quella radice possono contenere altre directory o altri file e così via fino a che vi sia capacità fisica di memorizzazione sul supporto utilizzato.

Il modo di indicare la directory radice varia da un sistema operativo ad un altro; in una console Linux, la directory radice è rappresentata con uno slash /.
Per individuare un file memorizzato su un disco, quindi, si dovrà indicare tutto il percorso da seguire partendo dalla directory radice, fino ad arrivare alla directory in cui si trova il file voluto.

Se il file index.html fosse nella directory radice, il percorso o PATH sarebbe semplicemente /index.html; se invece lo stesso file fosse all'interno della directory mysite, a sua volta contenuta nella directory radice, il percorso sarebbe /mysite/index.html.
Il primo slash indica la directory radice, il secondo slash ci dice che stiamo dentro una directory, il cui nome è la sequenza di caratteri immediatamente precedente.

Se scrivessimo un percorso del tipo /mysite/mirror/index.html, il nostro file sarebbe posizionato nella directory mirror, contenuta all'interno della directory mysite, che a sua volta è posizionata all'interno della directory radice.

La directory radice del server http

Un server http è impostato per far riferimento ad una propria directory radice.
La directory radice a cui si riferisce il server non necessariamente corrisponde alla directory radice del sistema su cui quel server è avviato; in ogni caso, il server permetterà l'accesso dall'esterno a partire dalla sua directory radice.

l'URL http://www.jacknake.org/index.html, quindi, identifica una risorsa sotto forma di file HTML di nome index.html, che si trova nella directory radice del server che gira sulla macchina identificata da www.jacknake.org.

Il file risorsa può essere memorizzato in una qualsiasi directory a partire dalla radice del server.

Esempio: La risorsa è un file
http://www.jacknake.org/informatica/url.html

Se fosse indicato un file, oppure una directory, che non esiste nel percorso specificato, il server WEB risponderà con l'errore n. 404 Not Found.

Riferimento implicito ad una risorsa e al protocollo

Qualsiasi browser per la navigazione in internet ha una barra degli indirizzi in cui scrivere l'URL del sito che si intende visitare.
A tal propostio si è sicuramente notato che in tale barra è sufficiente scrivere l'URL indicando solamente l'identificativo della macchina host su cui gira il server.

Esempio: L'URL nella barra degli indirizzi
www.jacknake.org

L'omissione del protocolo di comunicazione da utilizzare non provoca la generazione di un errore da parte del server, in quanto i programmi client come i browser sono configurati per utilizzare il protocollo http in modo predefinito, quando la sequenza scritta nella barra degli indirizzi appare essere un URL destinato ad un server WEB.

La mancata indicazione espressa di una risorsa da acquisire, allo stesso modo, non genera un errore, in quanto il server WEB è normalmente configurato per restituire un file predefinito, qualora non sia in grado di determinare dall'URL quale file restituire.

Anche la directory è una risorsa

Gli URL che si sono visti finora, quando referenziano in modo esplicito una risorsa, indicano sempre un nome di un file.
Ciò non è obbligatorio, in quanto con l'URL si può indicare come risorsa da reperire anche una directory.

Esempio: L'URL che referenzia una directory
http://www.jacknake.org/informatica/

La risposta del server è diversa a seconda di come esso è stato configurato.
Infatti l'amministratore del sistema può decidere di negare l'accesso a determinate directory, o può consentirlo solo a determinati utenti; in tali casi, se l'utente non è autorizzato, la risposta del server sarà l'errore n. 403 Forbidden.

Un'altro tipo di configurazione del server implica l'associazione di un file predefinito ad una o più directory, cosicchè quando il client fa riferimento ad una di quelle directory otterà in risposta quello specifico file.

L'ultima ipotesi di configurazione prevede che il server invii come risposta la lista dei file e delle directory contenuti nella directory referenziata; normalmente gli elementi di questa lista sono visualizzati dal browser in modo attivo sotto forma di collegamento, in modo che l'utente possa accedervi direttamente, ad esempio cliccando su uno dei termini della lista.

I file non HTML come risorse

Per mezzo di un URL http si possono acquisire risorse diverse dai documenti ipertestuali: immagini, audio, video, programmi eseguibili, documenti in altri formati, sono tutte risorse a cui si può accedere grazie al protocollo http.

Dietro a ciascuna di queste risorse vi è, naturalmente, un file, che può essere referenziato con un URL allo stesso modo con cui si referenziano i file di tipo HTML.

Esempio: Acquisire una immagine
http://www.jacknake.org/Documents/Foto/district_4.jpg

Conoscere il tipo di file che si stà acquisendo non è tanto importante per la costruzione dell'URL, ma piuttosto per capire come il browser reagirà una volta ricevuta la risorsa dal server.

Esempio: Acquisire un video
http://www.jacknake.org/Doc/Video/lamu_sigla.mpg

Quando il browser non è in grado di elaborare direttamente il file ricevuto dal server, il suo comportamento dipende da come è stato configurato.
Esso può essere configurato per avviare in automatico un apposito programma esterno, per mezzo del quale elaborare il file acquisito via internet; in tal caso, una volta conclusa l'acquisizione, il browser lancia uno specifico programma, gli passa il file acquisito e da questo momento l'elaborazione va sotto il controllo di questo programma esterno.

La configurazione predefinita dei browser non è quella di avviare un programma esterno, ma piuttosto quella di salvare il file sul disco locale, normalmente previa richiesta all'utente di indicare in quale directory tale salvataggio deve essere effettuato.

Approfondire la sintassi dello schem_specific_part

Fino ad ora è stato affermato che lo scheme_specific_part del protocollo http si risolve nello schema //autorità/percorso.
La parte autorità è stata genericamente indicata come parte contenente il nome di dominio, cioè l'dentificativo univoco dell'host su cui gira il server che risponde alle richieste del client.

La parte //atuorità è in realtà molto più ricca e può essere ulteriormente specificata secondo lo schema che segue:

//[utente[:parola d'ordine]@]nodo[:porta]

Le parti racchiuse all'interno delle parentesi quadre sono facoltative; se esse vengono omesse saranno utilizzate le impostazioni predefinite del server o del client.
L'unica parte necessaria è il nodo, che, come si può intuire, contiene il nome univoco dell'host da raggiungere.

La parte utente è il nome di un utente registrato nel server, a cui è stato autorizzato l'accesso a determinate directory vietate ad altri utenti; normalmente, anche se non necessariamente, ad un utente registrato è collegata una parola di accesso riservata, necessaria per essere autorizzati a consultare il contenuto di specifiche directory; la parte parola d'ordine contiene proprio tale parola d'accesso.

A livello sintattico si può notare che le parti utente e parola d'ordine sono separate dalla parte nodo da un carattere chiocciola @; se all'utente registrato è collegata anche una parola d'accesso, il nome del primo è separato dalla seconda dal carattere :.

Esempio: Indicare l'utente nell'URL
http://sonia@www.jacknake.org/Personal_Doc/index.html
Esempio: Indicare l'utente e la parola d'accesso nell'URL
http://sonia:spebs@www.jacknake.org/Personal/index.html

L'ultima parte da considerare, probabilmente anche la più difficile da capire per un principiante, è la porta.

Il concetto di porta ha a che fare con la struttura client - server che sta alla base della comunicazione via internet; tale comunicazione è finalizzata al reperimento di risorse che possono essere molto diverse fra loro; la diversità delle risorse implica anche la diversità dei vari programmi client e dei vari programmi server con cui la comunicazione viene gestita.

Su uno stesso host, pertanto, possono girare contemporaneamente più server, ciascuno dei quali gestisce un particolare tipo di comunicazione; tali server comunicano con i rispettivi client attraverso uno specifico canale di comunicazione identificato da un numero.

Il numero identificativo del canale di comunicazione è detto porta e di solito esso è definito in modo standard a seconda del tipo di server che lo utilizza; ad esempio, i server http di solito utilizzano la porta n. 80 per comunicare con i vari client.

Il fatto che ci siano delle porte standard, non implica che i server devono per forza utilizzarle, essi possono esigere che la comunicazione avvenga su una porta non standard; se così avviene, il client che vuole comunicare con quel server deve sapere quale sia il canale di comunicazione da utilizzare; uno dei modi per dire al client quale sia il canale che il server utilizza è quello di indicarlo nell'url in corrispondenza della parte porta.

Esempio: Indicare nell'URL una porta non standard
http://www.jacknake.org:8080/Document/index.html

Cenni sugli URL non collegati al protocollo http

Le risorse reperibili su internet e i connessi servizi di gestione non si limitano alle risorse ipertestuali e al protocollo http.

Il servizio FTP: trasferimento file

Lo scopo del servizio FTP è quello di gestire l'attività di trasferimento di uno o più file da un host ad un altro della rete internet; con ciò non si vuole affermare che il trasferimento dei file può avvenire solo tramite questo tipo di servizio, ma piuttosto che il servizio FTP nasce appositamente per rispondere a tale esigenza.

Quando non vi sono esigenze di navigazione, ma si ha solo la necessità di trasferire file di qualsiasi tipo da un punto ad un altro della rete, il servizio FTP può essere una risposta a questo bisogno.

Il servizio FTP è organizzato secondo la logica client - server, per cui di norma esiste un host su cui gira un server ftp ed esisto uno o più host su cui girano i client ftp che chiedono al server di trasferire determinati file.

I file sul host server sono organizzati gerarchicamente in directory a partire da una radice definita dal server; l'accesso a queste directory può essere anonimo, oppure può richiedere una autenticazione, cioè la fornitura di un nome utente e di una password.

Le operazioni di norma consentite sono il download, cioè il trasferimento dal server al client, o l'upload, cioè il trasferimento dal client al server; l'accesso può essere limitato sia in relazione al tipo di operazioni che possono essere eseguite, sia in relazione alle cartelle su cui si può operare.

La formazione degli URL collegati al protocollo ftp è molto simile alla formazione degli URL per il protocollo http, in quanto le risorse da acquisire sono file organizzati in modo gerarchico.

ftp://[utente[:parola d'ordine]@]nodo[:porta]/percorso

Le parentesi quadre indicano le parti facoltative.
L'unica differenza sostanziale è relativa alla parte scheme dell'url: al posto del protocollo http, si indica il protocollo ftp.

Nella parte autorità dello scheme_specific_part, come già visto per il protocollo http, è necessario indicare un nodo e possono essere indicati un utente, una parola d'ordine e una porta intesa come canale di comunicazione da utilizzare.
Il percorso non è altro che l'indicazione del percorso da seguire partendo dalla directory radice fino ad arrivare alla risorsa specifica da acquisire.

Esempio: Un URL per il protocollo FTP
ftp://sonia:spebs@jacknake.org/pub/PersonalDocument/foto.jpg

Utilizzare gli URL nei sorgenti HTML

I documenti ipertestuali e il linguaggio HTML

I documenti ipertestuali sono creati per mezzo del linguaggio HTML; la funzione di tale linguaggio è quella di strutturare i contenuti del documento; il documento viene suddiviso logicamente in elementi, ognuno dei quali ha una funzione o un ruolo rispetto alla struttura dei contenuti che l'autore ha progettato.

Suddividere gli argomenti trattati nel testo in capitoli, sezioni, sottosezioni ecc., suddividere il testo in paragrafi, individuare in quali parti inserire immagini o altri oggetti multimediali, individuare quali parti del testo sono attive attraverso collegamenti ad altri documenti ipertestuali, collegarsi a un file CSS che definisce gli stili di presentazione dei vari elementi del documento, impostare delle relazioni logiche fra i vari documenti ipertestuali, sono tutte attività che hanno a che fare con la strutturazione logica dei contenuti di un documento ipertestuale e quindi sono realizzabili attraverso il linguaggio HTML.

Del resto il documento viene definito ipertestuale proprio perchè mette in relazione fra loro una pluralità di risorse: collegamenti fra documenti ipertestuali diversi, collegamenti con delle immagini o altri elementi multimediali, collegamenti a file CSS, collegamenti a file che contengono codice javascript ed altro ancora.

Tutte queste risorse collegate, come probabilmente si è già intuito, sono contenute in file distinti da quello che contiene il documento principale e quindi in qualche modo a tali risorse collegate bisogna fare riferimento dal documento principale; lo strumento con cui vengono effettuati questi riferimenti sono gli URL.

Per creare la struttura logica dei contenuti di un documento ipertestuale, il linguaggio HTML mette a disposizione i così detti marcatori; se, per esempio, si vuole che una parte del testo sia attiva e rappresenti un collegamento ad un altro documento ipertestuale, quella parte di testo sarà inclusa all'interno della coppia di marcatori <a> e </a>, mentre se si vuole che in un determinato punto del documento sia inserita una immagine, si utilizza il marcatore <img>.

Ogni elemento della struttura può avere delle caratteristiche o proprietà che vengono definite attraverso gli attributi dei marcatori; ad esempio uno degli attributi del marcatore <a> è href, che contiene l'URL del documento ipertestuale a cui collegarsi, mentre uno degli attributi del marcatore <img> è src, che contiene l'URL del file immagine da rappresentare nel documento ipertestuale.

La combinazione fra marcatori ed attributi avviene secondo la seguente sintassi generica:

<nome-marcatore nome-attributo="valore-attributo">

Esempio: I marcatori e gli attributi
<p>
Per ulteriori informazioni sul linguaggio HTML si può consultare
<a href="http://a2.pluto.it/a2448.htm">
Appunti di informatica libera
</a>
</p>

Gli attributi di uno stesso marcatore possono essere, e normalmente sono, anche più di uno; in tal caso le coppie nome-attrbuto="valore-attributo" sono poste l'una di seguito all'altra separate da uno spazio.

URL con percorsi assoluti

Il sorgente HTML, che rappresenta un determinato documento ipertestuale, è contenuto in un file memorizzato in una delle directory dell'host su cui gira il server.

Quando dall'interno di un sorgente HTML ci si riferisce ad un diverso file, grazie all'url si può specificare dove questo file può essere acquisito.

Se il file a cui riferirsi si trova in un altro host rispetto a quello in cui è memorizzato il sorgente HTML, l'URL si forma nei modo visti nelle sezioni precedenti.

Quando il file a cui riferirsi si trova sullo stesso host del sorgente HTML, l'URL va formato indicando il percorso del file, in relazione alla struttura gerarchica del filesystem di questo specifico host.

Il modo più semplice, ma anche il più rigido, è quello di indicare l'intero percorso del file, cioè di partire dalla directory radice, specificare tutte le altre directory da attraversare, fino ad arrivare alla directory in cui è contenuto il file voluto.

Esempio: Percorsi Assoluti
<img src="/home/jacknake/mysite/informatica/gerarchia.png">

L'url formato indicando l'intero percorso del file è definito come URL con percorso assoluto.

URL con percorsi relativi

La formazione di URL con percorso assoluto ha una alternativa più flessibile: se il file a cui collegarsi si trova sulla stessa directory in cui è memorizzato il sorgente HTML, allora nell'url è sufficiente specificare il solo nome del file, non anche l'intero percorso a partire dalla directory radice; il server cercherà il file automaticamente nella stessa directory del sorgente HTML.

Esempio: Il file è sulla stessa directory del sorgente HTML che contiene l'URL
<a href="base-dir.html">directory di base</a>

L'url formato in questo modo è definito URL con percorso relativo.

Gli URL con percorso relativo si fondano sul concetto di directory di base, cioè la directory su cui il sever cercherà in automatico il file quando non è specificato espressamente alcun percorso.

La directory di base, se non diversamente stabilito, è la directory in cui è memorizzato il sorgente HTML che contiene l'URL.

La directory di base è il punto di partenza per la formazione di URL con percorso relativo, con i quali si possono referenziare anche i file che si trovano in una directory diversa da quella di base.

Esempio: Il file è nella directory immediatamente precedente
<img src="../gerarchia.png">

La sequenza ../ dice al server di scendere di un livello gerarchico.
In realtà, siccome la struttura gerarchica è rovesciata, sarebbe più corretto dire che si sta salendo di un livello gerarchico, ma rispetto al modo in cui viene scritto un percorso assoluto, la sequenza ../ fa riferimento alla directory che immediatamente precede la directory di base.

Esempio: Il file è nel secondo livello gerarchico precedente
<img src="../../gerarchia.png">

Con più sequenze di ../, si possono indicare directory che si trovano ad un qualsiasi livello gerarchico precedente rispetto alla directory di base.

Gli URL con percorso relativo possono far riferimento anche a directory che si trovano ad un livello gerarchico successivo rispetto alla directory di base

Esempio: Il file si trova in una directory successiva
<img src="images/gerarchia.png">

Se il primo carattere del percorso non è uno slash /, automaticamente il server lo considera come un percorso relativo; la prima directory indicata in tal tipo di percorso è intesa come una directory situata nella directory di base.

Con gli URL relativi è anche possibile scendere di un livello gerarchico, per poi risalire in una directory parallela a quella di base.

Esempio: Il file è in una directory parallela a quella di base
<img src="../images/gerarchia.png">

I caratteri da utilizzare per formare gli URL

Gli URL devono essere formati, cioè scritti, attraverso uno specifico insieme di caratteri che è lo US ASCII (composto da 127 caratteri).

Se si ha la necessità di utilizzare un carattere che non fa parte dell'insieme US ASCII, ma è parte dei primi 256 caratteri di uno specifico super insieme come UTF-8, si deve utilizzare una speciale codifica formata da un iniziale carattere di % seguito da due cifre esadecimali.

Le due cifre esadecimale rappresentano l'identificativo del carattere nel super insieme utilizzato: %20 rappresenta il carattere di spaziatura, %2f lo slash, %d8 lo zero barrato ø.
Di norma i primi 256 caratteri sono gli stessi qualsiasi sia il super set di US ASCII che si utilizza.

I sistemi operativi hanno specifici programmi per la gestione e la visualizzazione del set di caratteri; tali programmi possono essere utilizzati per conoscere i vari codici di identificazione e a quali caratteri tali codici corrispondono.

La speciale codifica deve essere utilizzata anche quando si voglio utilizzare, per formare un URL, i così detti caratteri riservati; i caratteri riservati sono quelli che hanno uno speciale significato nella sintassi stessa di un URL.

Caratteri Riservati
Descrizione Simbolo Codice
Punto e virgola ; %3b
Barra / %2f
Punto di domanda ? %3f
Due punti : %3a
Chiocciola @ %40
Uguale = %3d
e Commerciale & %26

In linea di massima si può affermare che è buona regola utilizzare la speciale codifica ogni volta che per formare un URL si vogliono utilizzare caratteri che non sono nè lettere nè numeri; ciò per evitare di utilizzare caratteri che possono confondere i programmi che, di volta in volta, sono deputati ad interpretare gli URL.