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

时间:2013-10-22 10:43:25

标签: java javascript html http spring-mvc

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

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

2 个答案:

答案 0 :(得分:5)

使用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(十六进制)。

答案 1 :(得分:3)

使用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://进行编码