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

查询字符串参数的Java URL编码

徐星阑
2023-03-14
问题内容

说我有一个网址

http://example.com/query?q=

并且我有一个用户输入的查询,例如:

随机词£500银行$

我希望结果是正确编码的URL:

http://example.com/query?q=random%20word%20%A3500%20bank%20%24

实现此目标的最佳方法是什么?我尝试URLEncoder创建URI / URL对象,但没有一个是正确的。


问题答案:

URLEncoder应该是要走的路。你只需要记住只对单个查询字符串参数名称和/或值进行编码,而不对整个URL 进行编码,请确保对查询字符串参数分隔符&和参数名称-值分隔符都不进行编码=

String q = "random word £500 bank $";
String url = "http://example.com/query?q=" + URLEncoder.encode(q, "UTF-8");

请注意,查询参数中的空格由+而不是表示%20,这是合法有效的。在%20通常被用于表示URI本身(URI查询字符串分隔符之前的部分的空间?),而不是在查询字符串(之后的部分?)。

另请注意,有两种encode()方法。一个不带charset参数,另一个不带charset参数。不带charset参数的参数已弃用。从不使用它,并且始终指定charset参数。在javadoc中甚至明确建议使用UTF-8编码,通过的授权RFC3986W3C

所有其他字符都是不安全的,并且首先使用某种编码方案转换为一个或多个字节。然后,每个字节由3个字符的字符串“%xy”表示,其中xy是该字节的两位十六进制表示形式。建议使用的编码方案是UTF-8。但是,出于兼容性原因,如果未指定编码,则使用平台的默认编码。



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

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

  • 我从客户端发送了以下查询字符串参数 在REST服务器中,我如何接收上述格式并正确分配给每个类别? 更新1 参数的值为 {_=[1437904506062],{“take”:75,“skip”:0,“page”:1,“pageSize”:75、“filter”:{“logic”:“and”,“filters”:〔{“field”:“prodCode”,“operator”:“eq”,“value”:

  • 但是,有没有可能在API网关中硬编码访问令牌,将其传递到目的地,这样用户就不必将其包含在请求中了呢? 或者我唯一的选择就是为了这个做一个兰姆达...?

  • 问题内容: 从格式如下的URL查询字符串中获取参数的“较少代码”方法是什么? www.mysite.com/category/subcategory?myqueryhash 输出应为: 我知道这种方法: 问题答案: 包含您要查找的数据。 文件资料 **php.net:$** _SERVER-手册

  • 问题内容: 我正在努力在路由中传递和读取多个查询字符串参数。 这是搜索页面: 这是JobOffersController: 读取$ routeParams根本不起作用。如果我将“ developer”作为关键字,将“ New York”作为位置,则$ routeParam对象如下所示: 有人可以告诉我我在做什么错吗?提前致谢。 PS这可能是由于错误配置的路由吗?当我通过该函数导航时,它会将URL编