Polski rejestr domen (NASK) umożliwił rejestrację domen .pl ze znakami diakrytycznymi — ą, ć, ę, ł, ń, ó, ś, ź, ż — dopiero w 2003 roku, i to właśnie wtedy Punycode stał się codziennym narzędziem polskich administratorów DNS, a nie tylko ciekawostką ze specyfikacji.
Litera „ł" to nie akcent, tylko osobna litera
W przeciwieństwie do „ą" czy „ę", które są literami z dodanym znakiem diakrytycznym, „ł" to odrębna litera alfabetu polskiego z własnym punktem kodowym Unicode (U+0142), niepowiązana algorytmicznie z literą „l". Dla Punycode nie ma to żadnego znaczenia — każdy znak poza ASCII jest kodowany tak samo — ale to dobry przykład tego, że „znak spoza ASCII" nie zawsze oznacza literę z akcentem.
Dlaczego nie wystarczyło po prostu dopuścić UTF-8 w DNS
Zmiana DNS tak, by natywnie akceptował UTF-8, wymagałaby jednoczesnej aktualizacji wszystkich serwerów nazw na świecie. Punycode omija ten problem: tylko przeglądarka i rejestrator muszą rozumieć kodowanie, a sama infrastruktura DNS nadal widzi wyłącznie ASCII.
Typowe zastosowania
- Sprawdzenie, jaka rzeczywista domena kryje się za ciągiem
xn--...otrzymanym w e-mailu lub linku. - Zamiana domeny ze znakami diakrytycznymi na formę Punycode przed wpisaniem jej w panelu DNS akceptującym tylko ASCII.
- Diagnozowanie certyfikatów lub adresów e-mail z IDN.
Atak homograficzny dotyczy też polskich marek
Cyrylickie „а" jest nieodróżnialne od łacińskiego „a" w większości czcionek, co pozwala rejestrować domeny takie jak „аpple.com" z cyrylicką literą, imitujące legalną markę. Gdy etykieta w podejrzany sposób miesza alfabety, współczesne przeglądarki pokazują od razu surowy zapis xn-- zamiast go dekodować, właśnie po to, by uniknąć takiego oszustwa.