最近我重建了一些表格,以便他們將接受國際域名一樣ColdFusion和Java的如何驗證使用Punycode IDN
的http://例子測試
我會那麼這些存儲爲的Punycode 。在此之前,雖然我們有驗證代碼運行檢查域是否Coldfusions有效使用isValid()
方法:
if(not isValid("url", sURL)){
return false;
}
用的Punycode我們有isValid()
功能失效的問題時域就像是:
HTTP://例子測
或當它轉化爲它的使用CreateObject("java", "java.net.IDN").toASCII(sURL);
的Punycode在某些情況下出來,如:
XN - HTTP:// 133ab - xn328sdf
(由例如但在某些情況下會出現在http之前字符://部分)
是目前有一個使用Java庫或Coldfusion庫或正則表達式來驗證IDN和「正常」域的方法?
對於未來的用戶:您需要單獨的域和協議,然後重新組合它們當使用isValid時。但是,如果您正在存儲它,請在原始URL上使用toAscii函數,因爲當您嘗試訪問Unicode時,如果URL在http://之前沒有xn--,則不會顯示該域的Unicode正確。 – Jarede
如果您要存儲它,則應將其存儲在有效的表單中。在轉換回unicode之前,您總是可以關閉該協議,然後重新組合協議。 –