【问题标题】:How to handle special characters in url as parameter values?如何将 url 中的特殊字符作为参数值处理?
【发布时间】:2013-10-31 04:34:09
【问题描述】:

任何人都可以建议如何处理下面的 url,因为 strLocation 的参数值具有特殊字符?在此先感谢

http://localhost:8080/safp/contacts/FirmAddress.do?btnAction=FirmAddress&firmId=122379069&strLocation=!@#$%^&*()_+&async=true&newAccID=112

【问题讨论】:

标签: java javascript html http spring-mvc


【解决方案1】:

使用URLEncoder 使用特殊字符对您的 URL 字符串进行编码。对字符串进行编码时,适用以下规则:

  • 字母数字字符“a”到“z”、“A”到“Z”和“0”到“9”保持不变。
  • 特殊字符“.”、“-”、“*”和“_”保持不变。
  • 空格字符“”转换为加号“+”。
  • 所有其他字符都是不安全的,首先使用某种编码方案将其转换为一个或多个字节。然后表示每个字节
    由 3 个字符的字符串“%xy”,其中 xy 是两位数
    字节的十六进制表示。推荐编码
    使用的方案是 UTF-8。但是,出于兼容性原因,如果
    未指定编码,则为平台的默认编码
    已使用。

例如,使用 UTF-8 作为编码方案,字符串 The string ü@foo-bar 将被转换为 The+string+%C3%BC%40foo-bar,因为在 UTF-8 中,字符 ü 被编码为两个字节 C3(十六进制)和 BC(十六进制),而字符 @ 被编码为一个字节 40(十六进制)。

【讨论】:

    【解决方案2】:

    使用URLEncoder.encode()

    String url="http://localhost:8080/safp/contacts/FirmAddress.do?btnAction=FirmAddress&firmId="+URLEncoder.encode("122379069","UTF-8")+"&strLocation="+URLEncoder.encode("!@#$%^&*()_+","UTF-8")+"&async=true&newAccID=112";
    

    注意:不要encode 整个网址,因为它也会对来自http://// 进行编码

    【讨论】:

      猜你喜欢
      • 2012-04-05
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      相关资源
      最近更新 更多