java-IDN.toASCII必须先删除协议?

时间:2016-06-24 23:18:52

标签: java url url-validation punycode

我为我的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还是我遗漏了什么。

解决方法

当我首先删除协议时,它可以工作。

1 个答案:

答案 0 :(得分:2)

文档很清楚,此方法仅适用于域名标签,因此需要删除协议。

  

标签是域名的一部分。最初的ToASCII   RFC 3490中定义的操作仅在单个标签上运行。   此方法可以通过假设处理标签和整个域名   域名中的标签始终用点分隔。

链接到Javadoc:https://docs.oracle.com/javase/8/docs/api/java/net/IDN.html#toASCII-java.lang.String-int-