如何编码查询参数以在 Java 中访问 url?我知道,这似乎是一个显而易见的问题。
我不确定有两个微妙之处:
- 应该将 url 上的空格编码为“+”还是“%20”?在 chrome 中,如果我输入“http://google.com/foo=?bar me”,chrome 会将其更改为使用 %20 进行编码
- 将冒号“:”编码为 %3B 是否必要/正确? Chrome 没有。
注意事项:
java.net.URLEncoder.encode
似乎不起作用,它似乎是用于编码数据以提交表单。例如,它将空格编码为+
而不是%20
,并将冒号编码为不必要的。java.net.URI
不对查询参数进行编码
最佳答案
java.net.URLEncoder.encode(String s, String encoding)
也可以提供帮助。它遵循 HTML 表单编码 application/x-www-form-urlencoded
。
URLEncoder.encode(query, "UTF-8");
另一方面,Percent-encoding (也称为 URL encoding )使用 %20
对空间进行编码。冒号是保留字符,所以 :
在编码后仍然是冒号。
关于java - 在 Java 中编码 URL 查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5330104/