如何将 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 中的特殊字符作为参数值处理?的主要内容,如果未能解决你的问题,请参考以下文章

PostMan发送请求参数带有路径特殊字符会返回400错误(与URL字符及URL编码值有关)

Vue中js获取url参数,特殊字符的转译、逆转译

requests模块请求参数中特殊字符%的处理

URL中的特殊字符

地址栏(URL)参数含有特殊符号的处理

url路径中 符号是特殊字符吗