Sì. Javascript consente di effettuare, piuttosto facilmente, l’encoding di una URL. Per effettuare questa operazione Javascript meta a disposizione degli sviluppatori due funzioni distinte:
- encodeURI()
- encodeURIComponent()
La funzione encodeURI() effettua l’encoding di una URL (o più correttamente URI) in modo da renderla conforme alla direttiva del W3C. Mediante l’encoding vengono "trasformati" mediante il percent-encoding i caratteri non ammessi (come, ad esempio, spazi e lettere accentate).La funzione in oggetto non effettua, invece, l’encodig dei caratteri riservati come:
, / ? : @ & = + $ #
Qualora sia necessario effettuare l’encoding anche di questi caratteri speciali è necessario utilizzare la seconda funzione, cioè encodeURIComponent().
Vediamo alcuni semplici esempi, partendo da encodeURI():
<script>
var uri="http://sito.com/cerca.php?nome=nicolò [email protected]";
document.write(encodeURI(uri));
</script>
Risultato:
http://sito.com/cerca.php?nome=nicol%C3%83%C2%B2%[email protected]
Esempio di encodeURIComponent():
<script>
var uri="http://sito.com/cerca.php?nome=nicolò [email protected]";
document.write(encodeURIComponent(uri));
</script>
Risultato:
http%3A%2F%2Fsito.com%2Fcerca.php%3Fnome%3Dnicol%C3%83%C2%B2%20bianchi%26email%3Dn.bianchi%40email.com
Le differenze, come potete vedere, sono piuttosto evidenti. La scelta tra l’una e l’altra funzione dipende, ovviamente, dalla necessità di sviluppo concreta per la quale è necessario effettuare l’url encoding.