如何编码查询参数以在 Java 中的 url 上进行?我知道,这似乎是一个显而易见且已经问过的问题。
我不确定有两个微妙之处:
- 空格应该在 url 上编码为“+”还是“%20”?在 chrome 中,如果我输入“http://google.com/foo=?bar me”,chrome 会将其更改为使用 %20 进行编码
- 将冒号“:”编码为 %3B 是否必要/正确?铬没有。
笔记:
java.net.URLEncoder.encode
似乎不起作用,似乎是为了编码要提交的数据。例如,它将空格编码为+
而不是%20
,并对不必要的冒号进行编码。java.net.URI
不对查询参数进行编码
原文由 Alex Black 发布,翻译遵循 CC BY-SA 4.0 许可协议
java.net.URLEncoder.encode(String s, String encoding)
也可以提供帮助。它遵循 HTML 格式编码application/x-www-form-urlencoded
。另一方面, 百分比编码(也称为 URL 编码)使用
%20
对空间进行编码。冒号是保留字符,所以编码后:
仍将是冒号。