2010-05-17 17 views
8

Şu anda bir "doğru" URI doğrulayıcısı üzerinde çalışıyorum ve şu anda hepsi ana bilgisayar adı doğrulamasına geliyor; gerisi o kadar da zor değil.IDN ana bilgisayar etiketlerinde hangi Unicode karakterlerine izin verilir?

IDN ana makine adı etiketlerinde sıkışmış durumdayım (yani Unicode içerenler; bu noktada olası kod kodu kodlanmış dizeler deşifre edilmiştir).

İlk düşüncem temel olarak IDN'leri desteklemeyen TLD'ler için bir tane, diğeri için de bir tane. Bu belki Mozilla’s list of IDN-enabled TLDs dayanabilir. Sırasıyla, ^[a-zA-Z0-9\-]+$ ve ^[a-zA-Z0-9\-\p{L}]+$. Ancak bu, ideal bir durum değildir, çünkü her IDN kayıt memuru hangi karakterlerin izin vereceğine karar verebilir.

Aradığım şey çeşitli TLD'lerde izin verilen Unicode karakterlerinin düzgün, tutarlı, güncel bir veri tablosu. Tüm verileri kendim Rus ve Çin kayıt sitelerinde bulmam gerekiyor gibi görünüyor (ki bu oldukça zor).

Tüm bu verileri kendim toplamaya çalışmaya başlamadan önce, böyle bir listenin var olup olmadığını merak ettim. Ya da daha iyi yaklaşımlar, en iyi/yaygın uygulamalar vb. Var mı? (Doğrulamanın olabildiğince katı olmasını istiyorum.)

cevap

1

Tüm Unicode etki alanlarını punycode'a dönüştürüp bunu doğrulayamıyor musunuz? DNS zaten gerçek UTF-8 karakterlerini desteklemediğinden, bu en iyi çözüm olabilir.

+0

Doğru .. Bunu da düşündüm. Ancak, kullanıcı girişi hakkında .. Kullanıcılarımın önce uri 'nin daha önce girilen koduna dönüştürmesini söyleyemem. Bu yüzden beni (muhtemelen kastetmişken) içsel olarak pixel koduna dönüştürüyor ... hala bu, ana makine adının gerçekten geçerli olması gerektiği anlamına gelmiyor (yanlışsa beni düzelt), yani bu durumda herhangi bir unicode karakteri ile eşleşiyor (\ p {L}) ve geçerli olarak değerlendirmek temelde aynı şeydir. Son seçenek, iyi bir çözüme ulaşamazsam, geri dönüş yöntemim olacaktır; Eğer durum böyle olacaksa, liste mozilla sağlar (örneğin 2 regex) listesine devam etmeyi önerir misiniz? –

+0

Yukarıda klivaj etmek için; TLD'ler mozzillada listelenmiştir -> [a-zA-Z0-9 \ - \ p {L}]/Diğer tüm TLD'ler -> [a-ZA-Z0-9 \ -] Bu doğru doğrulama mı? –

İlgili konular