您的位置:首页 > 其它

URL传带有特殊字符的参数时,特殊字符丢失问题

2018-02-09 11:00 288 查看
 之前遇到一个问题,在URL中传参时,参数中有+号,到后台用getParameter()接收时,将+号解析为了空格(即url传“hello+world”时,后台接收的数据是“hello world”)。网上查了一下,原来url不能直接传特殊字符,否则后台会取不到正确的值。因此我们在处理url传特殊字符时,需要做特殊处理。
例如对于+号这种问题我们可以这样处理:
1、在客户端时对URL中的特殊字符先处理一下,然后再传到后台:
用replace函数替换特殊字符var paramStr = "hello+world+hello+world";
//paramStr = paramStr.replace('+', '%2B');//这种方法不推荐,因为这种方法只能替换第1个+号
paramStr = paramStr.replace(/\+/g, '%2B');//这种方法可以将字符串中所有+号替换但是,如果需要多个特殊字符一起处理时,特殊字符中有“%”,则需要先处理“%”再处理其他字符。
其中特殊字符(部分)对应的编码如下:
+      ----》 %2B
空格  ----》 %20
/       ----》 %2F
?       ----》 %3F
%     ----》 %25
#      ----》 %232、在客户端中对URL中的+号不处理,在后台接收时将接收的空格替换为+号(但这种处理方式只适用于URL中有+号,没空格的情况)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: