Codifica dell'URL

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 dell'URI utilizza la codifica dell'URL per risolvere questo problema, mentre i moduli HTML apportano 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 codificare la barra verticale come %7C. Una virgola in una stringa deve essere codificata come %2C.

Ti consigliamo di utilizzare le normali librerie di creazione degli URL della piattaforma per codificare automaticamente gli URL e assicurarti che i rispettivi caratteri di escape siano corretti per la piattaforma.

Creazione di un URL valido

Potresti pensare che un URL "valido" sia già evidente, ma non è così. Un URL inserito nella barra degli indirizzi di un browser, ad esempio, potrebbe 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 trattare gli URL con caratteri UTF-8 come "validi", ma dovrebbe anche tradurre questi caratteri prima di inviarli a un server web. Questo processo è chiamato codifica degli URL o codifica a percentuale.

Caratteri speciali

Dobbiamo tradurre i caratteri speciali perché tutti gli URL devono essere conformi alla sintassi specificata dalla specifica URI (Uniform Resource Identifier). In pratica, ciò significa che gli URL devono contenere solo un sottoinsieme speciale di caratteri ASCII: i familiari simboli alfanumerici e alcuni caratteri riservati da utilizzare come caratteri di controllo all'interno degli URL. Questa tabella riassume questi caratteri:

Riepilogo dei caratteri validi per gli URL
ImpostacaratteriUtilizzo 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 9 7 Stringhe di testo, utilizzo degli schemi (http), porta (8080), ecc.
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 URL validi. La conformità di un URL per l'utilizzo di questo insieme di caratteri generalmente causa due problemi, uno di omissione e uno di sostituzione:

  • I caratteri che vuoi gestire esistono al di fuori del set precedente. Ad esempio, i caratteri in lingue straniere come 上海+中國 devono essere codificati utilizzando i caratteri precedenti. Secondo una convenzione comune, gli spazi (che non sono consentiti negli URL) vengono spesso rappresentati utilizzando anche il carattere più '+'.
  • I caratteri esistono all'interno dei set precedenti 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 "? e i misteri", devi codificare il carattere '?'.

Tutti i caratteri da codificare nell'URL vengono codificati utilizzando un carattere '%' e un valore esadecimale di due caratteri corrispondenti al relativo carattere UTF-8. Ad esempio, 上海+中國 in UTF-8 verrebbe codificata come URL come %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B. La stringa ? and the Mysterians deve essere codificata nell'URL come %3F+and+the+Mysterians o %3F%20and%20the%20Mysterians.

Caratteri comuni che richiedono la codifica

Ecco alcuni caratteri comuni che devono essere codificati:

Carattere non sicuro Valore codificato
Spazio %20
" %22
< %3C
> %3E
# %23
% %25
| %7C

La conversione di un URL che ricevi dall'input utente a volte è difficoltosa. Ad esempio, un utente può inserire un indirizzo come "Via Roma". In genere, devi creare l'URL partendo dalle sue parti, considerando gli input utente come caratteri letterali.

Inoltre, gli URL sono limitati a 16.384 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 viene raggiunto raramente. Tuttavia, tieni presente che alcuni servizi hanno diversi parametri che possono generare URL lunghi.