在Java中使用空格对URL进行编码是不正确的

在Java中使用空格对URL进行编码是不正确的,java,httpclient,urlencode,java-11,Java,Httpclient,Urlencode,Java 11,我正在尝试一种简单的url编码,需要对以下url进行编码: https://example.org/v1/x/y/Quick Brown Fox/jumps/over/ 我使用以下代码: String url = https://example.org/v1/x/y/Quick Brown Fox/jumps/over/; url = UrlEncoder.encode(url,"UTF-8"); 理想情况下,这应该提供如下输出- https://example.org/

我正在尝试一种简单的url编码,需要对以下url进行编码:

https://example.org/v1/x/y/Quick Brown Fox/jumps/over/
我使用以下代码:

String url = https://example.org/v1/x/y/Quick Brown Fox/jumps/over/;
url = UrlEncoder.encode(url,"UTF-8");
理想情况下,这应该提供如下输出-

https://example.org/v1/x/y/Quick%20Brown%20Fox/jumps/over/
这是正确的编码。相反,它最终用
+


使用JDK 11-我需要%20,因为我正在使用Apache HTTP客户端发送HTTP请求,并且URI不在存在空格的URL中使用
+

您可以使用
URI
类:

        URI uri = new URI("https", "//example.org/v1/x/y/Quick Brown Fox/jumps/over/", null);
        System.out.println(uri.toASCIIString()); // Should be escaped

请注意,您需要处理一个
URISyntaxException

这个UrlEncode类是什么?java.net.UrlEncode您指的是URLEncoder吗?这个?您能否确保问题中的代码与项目中的代码匹配
UrlEncode.encode()
方法按预期工作,因为它实现了应用程序/x-www-form-urlencoded MIME格式的编码。有关更多详细信息,请检查此stackoverflow条目: