如何处理url中的特殊字符作为参数值?

Pun*_*hit 7 html javascript java http spring-mvc

任何人都可以建议如何处理下面的url作为strLocation的参数值具有特殊的charecters?提前致谢

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

Tar*_*ngh 6

使用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";
Run Code Online (Sandbox Code Playgroud)

注意:不要encode使用整个 url,因为它也会对//from进行编码http://


Jun*_*san 5

使用URLEncoder对带有特殊字符的URL字符串进行编码.对String进行编码时,以下规则适用:

  • 字母数字字符"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(十六进制).