如何将 url 中的特殊字符作为参数值处理?
Posted
技术标签:
【中文标题】如何将 url 中的特殊字符作为参数值处理?【英文标题】:How to handle special characters in url as parameter values? 【发布时间】:2013-10-31 04:34:09 【问题描述】:任何人都可以建议如何处理下面的 url,因为 strLocation 的参数值具有特殊字符?在此先感谢
http://localhost:8080/safp/contacts/FirmAddress.do?btnAction=FirmAddress&firmId=122379069&strLocation=!@#$%^&*()_+&async=true&newAccID=112
【问题讨论】:
使用encodeURIComponent()
- developer.mozilla.org/en-US/docs/Web/javascript/Reference/…
@SJuan76...JAVA(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://
的//
进行编码
【讨论】:
以上是关于如何将 url 中的特殊字符作为参数值处理?的主要内容,如果未能解决你的问题,请参考以下文章