Türkçenin noktasız «ı» ve noktalı büyük «İ» harfleri, Unicode'da birbirinden tamamen ayrı iki kod noktasıdır — ve tam da bu yüzden Türkçe karakterli alan adlarında Punycode dönüşümü, birçok yazılımın varsayılan olarak beklediği İngilizce büyük/küçük harf kurallarıyla sürekli çakışan bir alandır.
«ş», «ğ», «ü», «ö», «ç»: ASCII'nin hiç tanımadığı harfler
Türkçeye özgü beş harf — ş, ğ, ü, ö, ç — ASCII karakter setinde hiç yer almaz, bu yüzden bunları içeren her alan adı DNS'e ulaşmadan önce xn-- önekiyle başlayan bir forma dönüştürülür. Görünen ad ile ağda gerçekten dolaşan dizi birbirinden tamamen farklıdır.
Neden DNS doğrudan UTF-8'e geçmedi
DNS'i UTF-8'i yerel olarak kabul edecek şekilde değiştirmek, dünyadaki tüm ad sunucularının eş zamanlı güncellenmesini gerektirirdi. Punycode bu sorunu ortadan kaldırır: yalnızca tarayıcının ve kayıt kuruluşunun kodlamayı anlaması yeterlidir, alttaki DNS altyapısı hâlâ sadece ASCII görür.
Yaygın kullanım alanları
- Bir e-postada veya bağlantıda görülen
xn--...dizisinin arkasındaki gerçek alan adını kontrol etmek. - Türkçe karakter içeren bir alan adını, yalnızca ASCII kabul eden bir DNS panelinde kullanmadan önce Punycode formuna çevirmek.
- Sertifikalarda veya e-posta adreslerinde IDN kaynaklı sorunları teşhis etmek.
Homoglif saldırısı Türkçe markaları da etkiler
Kiril alfabesindeki "а" harfi, çoğu yazı tipinde Latin "a" harfinden ayırt edilemez; saldırganlar bunu kullanarak "аpple.com" gibi, Punycode ile benzersiz bir xn-- dizisine kodlanan ama meşru bir markaymış gibi görünen alan adları kaydeder. Bir etiket alfabetleri şüpheli biçimde karıştırdığında, modern tarayıcılar onu çözmek yerine doğrudan ham xn-- biçimini gösterir.