In un URL, alcuni caratteri non possono far parte di un URL (ad esempio lo spazio), mentre altri hanno un significato speciale. Nei moduli HTML, il carattere =
viene utilizzato per separare un nome da un valore. La sintassi generica dell'URI utilizza la codifica degli URL per gestire questo problema, mentre i moduli HTML presentano alcune sostituzioni aggiuntive invece di 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 codificare la barra verticale come %7C
. Una virgola in una stringa deve essere codificata come %2C
.
Ti consigliamo di utilizzare le librerie di creazione degli URL standard della piattaforma per codificare automaticamente gli URL, per assicurarti che gli URL vengano correttamente sottoposti a escape per la piattaforma.
Creare un URL valido
Potresti pensare che un URL "valido" sia evidente, ma non è così. Un URL inserito all'interno di una barra degli indirizzi in un browser, ad esempio, potrebbe contenere caratteri speciali (ad es. "上海+中國"
); il browser deve tradurre internamente quei caratteri in una codifica diversa prima della trasmissione.
Con lo stesso token, qualsiasi codice che genera o accetta input UTF-8 potrebbe trattare gli URL con caratteri UTF-8 come "validi", ma dovrebbe anche tradurre questi caratteri prima di inviarli a un server web.
Questa procedura è chiamata
codifica o codifica percentuale.
Caratteri speciali
Dobbiamo tradurre caratteri speciali perché tutti gli URL devono essere conformi alla sintassi specificata dalla specifica URI (Uniform Resource Identifier). Questo significa che gli URL devono contenere solo un sottoinsieme speciale di caratteri ASCII: i simboli alfanumerici conosciuti e alcuni caratteri riservati da utilizzare come caratteri di controllo negli URL. Questa tabella riassume questi caratteri:
Imposta | caratteri | Utilizzo URL |
---|---|---|
Alfanumerico | a b c d e f g h i j k l m n o p 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 | Stringhe di testo, utilizzo dello schema (http ), porta (8080 ) e così via. |
Non prenotato | - _ . ~ | Stringhe di testo |
Riservata | ! * ' ( ) ; : @ & = + $ , / ? % # [ ] | Caratteri di controllo e/o stringhe di testo |
Quando crei un URL valido, devi assicurarti che contenga solo i caratteri visualizzati nella tabella Riepilogo dei caratteri validi. La conformità di un URL per l'utilizzo di questo set di caratteri comporta in genere due problemi: uno di omissione e uno di sostituzione:
- I caratteri che vuoi gestire esistono al di fuori di quanto indicato sopra. Ad esempio, i caratteri in lingue straniere come
上海+中國
devono essere codificati utilizzando i caratteri sopra riportati. Secondo una convenzione comune, gli spazi (che non sono consentiti all'interno degli URL) sono spesso rappresentati anche dal carattere più'+'
. - I caratteri esistono all'interno dell'insieme sopra indicato come caratteri riservati, ma devono essere utilizzati letteralmente.
Ad esempio,
?
viene utilizzato all'interno degli URL per indicare l'inizio della stringa di query. Se vuoi utilizzare la stringa "? e i misteri", devi codificare il carattere'?'
.
Tutti i caratteri da codificare per URL sono codificati con un carattere '%'
e un valore esadecimale di due caratteri corrispondente al loro carattere UTF-8. Ad esempio, 上海+中國
in UTF-8 avrà la codifica URL come %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B
. La stringa ? and the Mysterians
sarà codificata nell'URL come
%3F+and+the+Mysterians
o %3F%20and%20the%20Mysterians
.
Caratteri comuni che richiedono la codifica
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 utente a volte è complicata. Ad esempio, un utente potrebbe inserire un indirizzo nel campo "5th&Main St." In genere, devi creare l'URL dalle sue parti, trattando qualsiasi input utente come caratteri letterali.
Inoltre, gli URL sono limitati a 8192 caratteri per tutti i servizi web e le API web statiche di Google Maps Platform. Per la maggior parte dei servizi questo limite di caratteri verrà raramente raggiunto. Tuttavia, tieni presente che determinati servizi hanno diversi parametri che potrebbero comportare URL lunghi.