示例代码:

java.net.URI.create("http://测试.com").getHost(); // return null
new java.net.URL("http://测试.com").getHost(); // return "测试.com"
  • 实际:URI不能解析IRI
  • 预期:两者都会回归"测试.com"

相关文件:

javadoc of URI中,提到它支持:

其他不在US-ASCII字符集中的Unicode字符不是控制字符(根据character.isISOControl方法),也不是空格字符(根据character.isSpaceChar方法)(与RFC 2396的偏差,仅限于US-ASCII)

众所周知

抽象地说,每个URL都是一个URI,但不是每个URI都是一个URL.

因此,上述行为似乎并不符合预期.

以前是RFE,但如果我理解正确的话,似乎是reverted.

推荐答案

你说得对.Java目前不支持IRIs.

您发现的RFE表明有人试图在Java6中实现IRIs.出于兼容性原因,已将其回滚:

作为CCC 6348622的一部分集成到野马b67中的变更会导致不兼容问题,即6380332.我们需要重新判断"基于注册表"一词在java中的用法.网URI规范并记录不兼容问题.

出于兼容性原因,将把URI类回滚到Tiger版本.

最近,David Fuchs做了一些工作来分析问题,并提出了一些原型代码,但自2019年以来,这似乎没有进展:

Java相关问答推荐

使用Apache Poi MQLSlideShow,在XSLFTable表中,我们可以在文本段落后面的每个单元格中包含圆角矩形吗?

为什么如果数组列表中有重复项,我的代码SOMETIMES不返回true?

Java List with all combinations of 8 booleans

为什么我的ArrayList索引的索引总是返回-1?

确定Java中Math.Ranb()输出的上限

如何才能使我的程序不会要求两次输入?

把一条整型短裤和两条短裤装成一条长的

我如何知道MediaDiscoverer何时完成发现介质?

尽管通过中断请求线程死亡,但线程仍将继续存在

搜索列表返回多个频道

扩展视图高度,并将其拖动到较低的视图上,而不是将其向下推?

为什么Collectors.toList()不能保证易变性

如何在Spring Boot中创建可以将值传递给配置的&Enable&Quot;注释?

try 在两个不同数组的数字之间求平均值

多线程、并发和睡眠未按预期工作

由于版本不匹配,从Java 8迁移到Java 17和Spring 6 JUnit4失败

java构造函数中的冻结操作何时发生?

如何在 Android Studio 中删除 ImageView 和屏幕/父级边缘之间的额外空间?

一条Java记录可以保存多少个字段?

Java-Apache BufferedHttpEntity 在发送请求时加载整个文件