java - 在 Java 中编码 URL 查询参数

标签 java urlencode

如何编码查询参数以在 Java 中访问 url?我知道,这似乎是一个显而易见的问题。

我不确定有两个微妙之处:

  1. 应该将 url 上的空格编码为“+”还是“%20”?在 chrome 中,如果我输入“http://google.com/foo=?bar me”,chrome 会将其更改为使用 %20 进行编码
  2. 将冒号“:”编码为 %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/

相关文章:

Java/在第一行写入,由 out.write 编写

java - Spring Batch - 资源不能为空

java - 为什么每个应用程序有一个 JVM?

php - 如何仅对 url 字符串中的查询参数进行编码?

qt - Qt4 中的 URL 编码

java - 如何通过 apache poi 在 docx 中创建分节符类型下一页

java - 了解 readResolve 方法

java - Thymeleaf:在 thymeleaf 中创建动态 URL 查询字符串

python - 如何正确地对重音进行 url 编码?

c# - 使用 SmtpClient 发送带有查询字符串的 url