gpt4 book ai didi

java - 当它包含变音符号时解析 Java 中 URI 的主机

转载 作者:搜寻专家 更新时间:2023-11-01 02:25:20 25 4
gpt4 key购买 nike

我正在尝试从主机中包含字符“ü”的 URI 中解析主机,如下所示:

String host = new java.net.URI("http://füllmethodentafel.de").getHost();

但是,主机将为空。它适用于其他 URI。知道为什么它不起作用吗?

最佳答案

java.net.URI只能解析符合RFC 2396的网址.此 RFC 需要这些规则:

  hostport      = host [ ":" port ]
host = hostname | IPv4address
hostname = *( domainlabel "." ) toplabel [ "." ]
domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum
toplabel = alpha | alpha *( alphanum | "-" ) alphanum

alphanum 基本上是 [a-zA-Z0-9]ü 等字符不包括在内。

URI 可以处理Punycode类似 http://www.xn--hostwith-e6a.com/ 的 URL 相当于 http://www.hostwithü.com/。为此,java.net.IDN很有用。

String host = "www.hostwithü.com";
String toASCII = IDN.toASCII(host);
System.out.println(toASCII);
// www.xn--hostwith-e6a.com

关于java - 当它包含变音符号时解析 Java 中 URI 的主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25183405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com