java - IDN.toASCII 之前必须删除协议吗?

java - IDN.toASCII must protocol be removed before?

我为我的 JSF 网页创建了一个 URL 验证器,现在偶然发现了第一个单词(由点分隔)包含非 ASCII 字符的域的问题。

我有以下有效网站 url http://testä.com。使用 IDN.toASCII() 将其转换为微不足道的代码会创建无效的 url:xn--http://test-v8a.com.

不应该是http://xn--test-ooa.com/

我还在德语 de 域管理器 DENIC 上检查过它,它显示了同样无效的 URL 结果。

https://www.denic.de/service/tools/idn-web-converter/

这是 Java/RFC 中的 BUG 还是我遗漏了什么。

解决方法

当我一开始删除协议时它起作用了。

文档明确指出此方法仅对域名标签起作用,所以是的,需要删除该协议。

A label is an individual part of a domain name. The original ToASCII operation, as defined in RFC 3490, only operates on a single label. This method can handle both label and entire domain name, by assuming that labels in a domain name are always separated by dots.

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