Ebbene si, quel giorno è arrivato. Il giorno in cui un cliente ci ha chiesto di gestire un dominio contenente caratteri non-ASCII (nel caso specifico lettere accentate).
Da che mondo è mondo, cioè da quanto esistono i DNS, i nomi di dominio posso contenere solamente caratteri ASCII it.wikipedia.org/wiki/ASCII#Tabella_dei_caratteri, escludendo di fatto non solo tutti gli ideogrammi della lingua araba, cinese, giapponese, ecc. ma più semplicemente anche le nostre e care lettere accentate.
Anni fa qualcuno però ha deciso che questa ingiustizia doveva finire e ha voluto a tutti i costi che venissero accettati anche domini con caratteri non-ASCII. Ma ormai la frittata era fatta, perché tutti i protocolli su cui si basa internet utilizzano codifiche ASCII. Ma questo qualcuno voleva a tutti i costi questi domini internazionali it.wikipedia.org/wiki/Nome_di_dominio_internazionalizzatoperciò ha deciso bene di inventarsi una codifica chiamata Punycode it.wikipedia.org/wiki/Punycode.
Senza entrare nel dettaglio dell'algoritmo di codifica (che secondo me non l'ha capito nemmeno quello che l'ha inventato) basta sapere che punycode non fa altro che "convertire" un dominio non-ASCII in una stringa ASCII. In particolare viene aggiunto al dominio un prefisso xn-- seguito dal nome del dominio al quale vengono sostituiti i caratteri non-ASCII con caratteri ASCII.
Ad esempio, il dominio www.caffè.it viene confertito in www.xn--caff-8oa.it.
I browser recenti (IE a partire dalla versione 6 tramite l'utilizzo di un plugin) sono in grado di gestire la codifica punycode, perciò quando digitate l'URL http://www.caffè.it si occuperanno in maniera totalmente trasprarente per l'utente di convertire la URL in http://www.xn--caff-8oa.it. Perciò il vostro browser farà prima una query al DNS utilizzando www.xn--caff-8oa.it e invierà la richiesta al web server sempre utilizzando l'hostname www.xn--caff-8oa.it.
Detto ciò, come dovrò configurare Apache, Tomcat o qualsiasi altro webserver/application server? Semplicemente utilizzando il dominio nel formato ASCII. Nel nostro caso:
ServerName www.xn--caff-8oa.it
Ora vi starete chidendo: ma come faccio a sapere qual'è l'equivalente ASCII del mio dominio non-ASCII. Beh, io non lo so, ma ci sono molti convertitori online che possono diverlo:
mct.verisign-grs.com/conversiontool/convertServlet
www.charset.org/punycode.php