Java HttpURLConnection和URL中的编码字符

Java HttpURLConnection和URL中的编码字符,java,httpurlconnection,Java,Httpurlconnection,我有这样一个代码: URL url = new URL("http://foo.com/?param=paj%E9"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); ... 然而,openConnection似乎正在压制url的“%E9”部分,服务器最终接收到一个请求 我是否忘记应用任何不同的设置以使其正常工作 谢谢 编辑:url“http://foo.com/?param=paj%E9“已被

我有这样一个代码:

URL url = new URL("http://foo.com/?param=paj%E9");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
...
然而,openConnection似乎正在压制url的“%E9”部分,服务器最终接收到一个请求

我是否忘记应用任何不同的设置以使其正常工作

谢谢

编辑:url“http://foo.com/?param=paj%E9“已被编码(from=pajé),这应该是服务器应该接收的请求。如果我尝试直接从浏览器访问,它将按预期工作。如果我对“paj%E9”进行URLEncode,我将对参数进行双重编码,服务器在解码该值时将看到“paj%E9”而不是“pajé”。
我实际上正在尝试构建一个代理,因此我收到了已经编码的URL。问题是,每当我使用HttpURLConnection传递这样一个编码参数以请求时,它都会忽略编码部分(如%E9)。

您需要使用java.net.URI类对URL进行编码,而不是自己处理它。切记:

您需要使用java.net.URI类对URL进行编码,而不是自己处理。切记:
您可以使用以下代码
URLEncoder.encode(“中文", "utf-8“

您可以使用以下代码
URLEncoder.encode(“中文", "utf-8“

您需要对请求参数进行URL编码。您需要对请求参数进行URL编码。