如何处理url中的特殊字符作为参数值?
任何人都可以建议如何处理下面的url作为strLocation的参数值具有特殊的字符? 提前致谢
http://localhost:8080/safp/contacts/FirmAddress.do?btnAction=FirmAddress&firmId=122379069&strLocation=!@#$%^&*()_+&async=true&newAccID=112
使用URLEncoder对带有特殊字符的URL字符串进行编码。对String进行编码时,以下规则适用:
- 字母数字字符“a”到“z”,“A”到“Z”和“0”到“9”保持不变。
- 特殊字符“。”,“ – ”,“*”和“_”保持不变。
- 空格字符“”被转换为加号“+”。
- 所有其他字符都是不安全的,并且首先使用某种编码方案将其转换为一个或多个字节。 然后表示每个字节
由3个字符的字符串“%xy”,其中xy是两位数
字节的hex表示。 推荐的编码
使用的方案是UTF-8。 但是,出于兼容性原因,如果是
未指定编码,则为平台的默认编码
用来。
例如,使用UTF-8作为编码方案,字符串The string ü@foo-bar
将转换为The+string+%C3%BC%40foo-bar
因为在UTF-8中,字符ü被编码为两个字节C3(hex) )和BC(hex),字符@被编码为一个字节40(hex)。
使用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
整个urlencode
,因为它还会对来自http://
的//
进行编码