Alcuni caratteri non possono far parte di un URL (ad esempio, lo spazio) e altri
hanno un significato speciale in un URL. Nei moduli HTML, il carattere =
viene
utilizzato per separare un nome da un valore. La sintassi generica URI utilizza la codifica URL
per risolvere questo problema, mentre i moduli HTML effettuano alcune sostituzioni aggiuntive
anziché applicare la codifica percentuale per tutti questi caratteri.
Ad esempio, gli spazi in una stringa vengono codificati con %20
o sostituiti con
il segno più (+
). Se utilizzi una barra verticale (|
) come separatore, assicurati
di codificarla come %7C
. Una virgola in una stringa deve essere codificata come %2C
.
Ti consigliamo di utilizzare le normali librerie di creazione URL della tua piattaforma per codificare automaticamente gli URL, in modo da assicurarti che vengano sottoposti all'escape corretto per la tua piattaforma.
Creare un URL valido
Potresti pensare che un URL "valido" sia ovvio, ma
non è proprio così. Un URL inserito nella barra degli indirizzi di un
browser, ad esempio, può contenere caratteri speciali (ad es.
"上海+中國"
); il browser deve tradurre internamente
questi caratteri in una codifica diversa prima della trasmissione.
Allo stesso modo, qualsiasi codice che genera o accetta input UTF-8
potrebbe considerare gli URL con caratteri UTF-8 come "validi", ma dovrebbe anche
tradurre questi caratteri prima di inviarli a un web server.
Questa procedura è chiamata
codifica URL o codifica percentuale.
Caratteri speciali
Dobbiamo tradurre i caratteri speciali perché tutti gli URL devono essere conformi alla sintassi specificata dalla specifica Uniform Resource Identifier (URI). Ciò significa che gli URL devono contenere solo un sottoinsieme speciale di caratteri ASCII: i simboli alfanumerici noti e alcuni caratteri riservati da utilizzare come caratteri di controllo all'interno degli URL. Questa tabella riassume questi caratteri:
Configurato | caratteri | Utilizzo degli URL |
---|---|---|
Alfanumerico | a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 | Stringhe di testo, utilizzo dello schema (http ), porta (8080 ) e così via. |
Non prenotato | - _ . ~ | Stringhe di testo |
Prenotato | ! * ' ( ) ; : @ & = + $ , / ? % # [ ] | Caratteri di controllo e/o stringhe di testo |
Quando crei un URL valido, devi assicurarti che contenga solo i caratteri mostrati nella tabella. L'adeguamento di un URL all'utilizzo di questo insieme di caratteri genera in genere due problemi, uno di omissione e uno di sostituzione:
- I caratteri che vuoi gestire non rientrano nel set
precedente. Ad esempio, i caratteri in lingue straniere
come
上海+中國
devono essere codificati utilizzando i caratteri sopra indicati. Per convenzione, gli spazi (che non sono consentiti negli URL) sono spesso rappresentati anche utilizzando il carattere'+'
. - I caratteri esistono all'interno del set precedente come caratteri riservati,
ma devono essere utilizzati letteralmente.
Ad esempio,
?
viene utilizzato negli URL per indicare l'inizio della stringa di query; se vuoi utilizzare la stringa "? and the Mysterions", devi codificare il carattere'?'
.
Tutti i caratteri da codificare come URL vengono codificati
utilizzando un carattere '%'
e un valore esadecimale di due caratteri
corrispondente al carattere UTF-8. Ad esempio,
上海+中國
in UTF-8 sarebbe codificato nell'URL come
%E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B
. La
stringa ? and the Mysterians
verrebbe codificata come URL
%3F+and+the+Mysterians
o %3F%20and%20the%20Mysterians
.
Caratteri comuni che devono essere codificati
Alcuni caratteri comuni che devono essere codificati sono:
Carattere non sicuro | Valore codificato |
---|---|
Spazio | %20 |
" | %22 |
< | %3C |
> | %3E |
# | %23 |
% | %25 |
| | %7C |
La conversione di un URL ricevuto dall'input dell'utente a volte è complicata. Ad esempio, un utente potrebbe inserire un indirizzo come "5th&Main St.". In genere, devi costruire l'URL a partire dalle sue parti, trattando l'input dell'utente come caratteri letterali.
Inoltre, gli URL sono limitati a 16.384 caratteri per tutti i servizi web di Google Maps Platform e le API web statiche. Per la maggior parte dei servizi, questo limite di caratteri viene raramente raggiunto. Tuttavia, tieni presente che alcuni servizi hanno diversi parametri che potrebbero generare URL lunghi.