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

16

有人能否建议如何处理含有特殊字符的参数值作为strLocation参数的下面的URL?先行致谢。

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

2
使用 encodeURIComponent() - https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent - techfoobar
@SJuan76...JAVA(spring_mvc) - Puneet Purohit
2个回答

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

8
使用 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";

注意:不要对整个URL进行编码,因为这将同时对http://中的//进行编码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接