当前位置: 首页 > 面试题库 >

用Java编码URL查询参数

毛成济
2023-03-14
问题内容

如何在Java中将查询参数编码为URL?我知道,这似乎是一个显而易见且已经提出的问题。

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

  1. 网址上的空格应该编码为“ +”还是“%20”?在chrome中,如果我输入“ http://google.com/foo=?bar me”,则chrome会将其更改为使用%20进行编码
  2. 是否有必要/正确将冒号“:”编码为%3B?Chrome没有。
    笔记:

  3. java.net.URLEncoder.encode似乎不起作用,似乎是为了对要编码的数据进行表单提交。例如,它将空格编码为,+而不是%20,并编码不必要的冒号。

  4. java.net.URI 不编码查询参数

问题答案:

java.net.URLEncoder.encode(String s, String encoding)也可以提供帮助。它遵循HTML表单编码application/x-www-form-urlencoded

URLEncoder.encode(query, "UTF-8");

另一方面,百分比编码(也称为URL编码)使用编码空间%20。冒号是保留字符,因此:在编码后仍将保留冒号。



 类似资料:
  • 在Java中,如何对url上的查询参数进行编码?我知道,这似乎是一个显而易见的问题。 有两个微妙之处我不确定: URL上的空格应该编码为"或"吗?在chrome中,如果我输入“http://google.com/foo=?bar我”chrome将其更改为编码 是否有必要/正确地将冒号":"编码为;?Chrome没有。 注意事项: 似乎不起作用,它似乎是用于编码要提交表单的数据。例如,它将空格编码为

  • 问题内容: 说我有一个网址 并且我有一个用户输入的查询,例如: 随机词银行 我希望结果是正确编码的URL: 实现此目标的最佳方法是什么?我尝试创建URI / URL对象,但没有一个是正确的。 问题答案: 应该是要走的路。你只需要记住只对单个查询字符串参数名称和/或值进行编码,而不对整个URL 进行编码,请确保对查询字符串参数分隔符和参数名称-值分隔符都不进行编码。 请注意,查询参数中的空格由+而不

  • 假设我有一个URL 并且我有一个用户输入的查询,例如: 随机字500英镑银行$ 我希望结果是一个正确编码的URL: 实现这一点的最佳方法是什么?我尝试了并创建URI/URL对象,但结果都不是很对。

  • 问题内容: 我有一个网址 并且我有一个用户输入的查询,例如: 我希望结果是正确编码的URL: 实现此目标的最佳方法是什么?我尝试创建URI / URL对象,但是没有一个是正确的。 问题答案: 可以使用 。您只需要记住只对单个查询字符串参数名称和/或值进行编码,而不对整个URL 进行编码,请确保对查询字符串参数分隔符&和参数名称-值分隔符都不进行编码=。 请注意,查询参数中的空格由而不是表示,这是合

  • 问题内容: 是否有一个广泛使用的Java库,其功能类似于dojo.objectToQuery()?例如(假设使用HttpCore的HttpParams对象,但是任何键值映射都可以): 应该产生“ foo = bar&thud = grunt”。 我知道写起来并不难,但似乎应该已经写了。我只是找不到。 问题答案: 我最终写了我自己的。可以这样称呼 这还不错。

  • 我正在努力理解的行为。我想用它来编码查询参数中的URL,但它似乎只转义字符,而不转义其他必要的字符,如。 查询参数中根本没有编码的URL示例: 输出: 这是不正确的,因为未编码的会导致被解释为而不是的查询参数。 但是,如果使用包含字符的输入:: 输出: 字符被转义。 自动转义字符,但不转义其他保留字符,这似乎不一致。 使用将URL编码为查询参数的正确过程是什么?