我为我的JSF网页创建了一个URL验证器,现在偶然发现了第一个单词(用点分隔)包含非ASCII字符的域的问题。
我有以下有效网站网址http://testä.com
。使用IDN.toASCII()
将其转换为微不足道的代码会产生无效的网址:xn--http://test-v8a.com
。
不应该是http://xn--test-ooa.com/
我还在德国de
域管理员DENIC上查看了它,其中显示了相同的无效网址结果。
https://www.denic.de/service/tools/idn-web-converter/
这是Java / RFC中的BUG还是我遗漏了什么。
解决方法
当我首先删除协议时,它可以工作。
答案 0 :(得分:2)
文档很清楚,此方法仅适用于域名标签,因此需要删除协议。
标签是域名的一部分。最初的ToASCII RFC 3490中定义的操作仅在单个标签上运行。 此方法可以通过假设处理标签和整个域名 域名中的标签始终用点分隔。
链接到Javadoc:https://docs.oracle.com/javase/8/docs/api/java/net/IDN.html#toASCII-java.lang.String-int-