DEV

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.