Percent-Encoding: Quando e Come Codificare le URL
Le URL possono contenere solo un sottoinsieme limitato di caratteri ASCII. I caratteri speciali come spazi, lettere accentate italiane (à, è, ì, ò, ù), simboli come & e = devono essere "escaped" attraverso il percent-encoding per essere trasmessi correttamente attraverso il web.
Come Funziona il Percent-Encoding
Il percent-encoding sostituisce ogni carattere non sicuro con un segno percentuale seguito dai due caratteri esadecimali del suo codice UTF-8. Così uno spazio diventa %20, la à italiana diventa %C3%A0, e la & diventa %26. Il nome "percent-encoding" deriva proprio da questo simbolo %.
encodeURI vs. encodeURIComponent
- encodeURI(): Codifica tutti i caratteri tranne quelli che hanno un significato speciale nell'URL (: / ? # etc.). Usalo per codificare una URL completa.
- encodeURIComponent(): Codifica anche i caratteri speciali dell'URL. Usalo per codificare singoli parametri query string, perché & e = devono essere escaped dentro i valori dei parametri.
Caratteri Sicuri nelle URL
I caratteri che non necessitano di encoding nelle URL sono: lettere A-Z, a-z, cifre 0-9, e i simboli - _ . ~ (unreserved characters secondo RFC 3986). Tutto il resto dovrebbe essere percent-encoded. In pratica, molti browser sono permissivi e accettano spazi e alcune lettere accentate, ma per la massima compatibilità è meglio codificare sempre.