URL的参数中有加号传值变为空格的问题(URL特殊字符)


Posted in Javascript onNovember 04, 2016

1.URL特殊字符需转义
2.空格换成加号(+)  
3.正斜杠(/)分隔目录和子目录  
4.问号(?)分隔URL和查询  
5.百分号(%)制定特殊字符  
6.#号指定书签  
7.&号分隔参数  

转义字符的原因:

如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的作为另外一个参数来看待。例如
表单的action为list.jsf?act=Go&state=5
则提交时通过request.getParameter可以分别取得act和state的值。
如果你的本意是act='go&state=5'这个字符串,那么为了在服务端拿到act的准确值,你必须对&进行转义

url转义字符原理:

将这些特殊的字符转换成ASCII码,格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。
 
1.URL特殊符号及对应的十六进制值编码:  
2.
3.+  URL 中+号表示空格 %2B  
4.空格 URL中的空格可以用+号或者编码 %20  
5./ 分隔目录和子目录 %2F   
6.? 分隔实际的 URL 和参数 %3F   
7.% 指定特殊字符 %25   
8.# 表示书签 %23   
9.& URL 中指定的参数间的分隔符 %26   
10.= URL 中指定参数的值 %3D 

解决方法如下(以+号为例):

方法一、修改客户端,将客户端带“+”的参数中的“+”全部替换为?“%2B”,这样参数传到服务器端时就能得到“+”了。
方法二、修改服务器端,将空格替换为“+”,这种方式只适用于参数中有?“+”没有空格的情况。

例子:

String a = reuqest.getParameter("clientStr").replace(' ','+');

如果客户端为clientStr=test+OK,那么a的值为test+OK;

方法三、修改服务器端,将获取参数的方法由?reuqest.getParameter改为?request.getQueryString().substring(0),然后对得到的字符串进行解析。

例子:

String a =request.getQueryString().substring(0);

如果客户端为clientStr=test+OK,那么a的值为?clientStr=test+OK,需要再解析一下,

a=a.?substring(10);得到a的值为?test+OK。

附:一个JS,用来转义URL中特殊字符的。

function URLencode(sStr) {   
return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F'); 
}

如果你是用replace()时,使用name.replaceAll("\\ ","%20");

st_fname=name.replaceAll("\\ ","%20"); st_fname=dst_fname.replaceAll("\\+","%2B");

本人的解决方法:

js代码

function rStr(str){
str=str.replace(/\+/g,"%2B");
return str;
}

function SelectArcListA(fname){
 var posLeft = 10;
 var posTop = 10;
 window.open("content_select_list.asp?f="+fname+"&k="+escape(rStr(form1.tag.value)), "selArcList", "scrollbars=yes,resizable=yes,statebar=no,width=700,height=500,left="+posLeft+", top="+posTop);
}

asp端替换代码

keyword=replace(keyword,"%2B","+")

完美解决问题。

Javascript 相关文章推荐
javascript radio 联动效果
Mar 04 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
Jun 17 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
Apr 23 Javascript
如何获取网站icon有哪些可行的方法
Jun 05 Javascript
JavaScript动态设置div的样式的方法
Dec 26 Javascript
浅谈JavaScript中数组的增删改查
Jun 20 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
Mar 28 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
Nov 27 Javascript
Angular5给组件本身的标签添加样式class的方法
Apr 07 Javascript
原生javascript AJAX 三级联动的实现代码
May 04 Javascript
angular2实现统一的http请求头方法
Aug 13 Javascript
vue-autoui自匹配webapi的UI控件的实现
Mar 20 Javascript
Angular页面间切换及传值的4种方法
Nov 04 #Javascript
AngularJS实现根据变量改变动态加载模板的方法
Nov 04 #Javascript
RGB和YUV 多媒体编程基础详细介绍
Nov 04 #Javascript
javascript设置文本框光标的方法实例小结
Nov 04 #Javascript
使用Curl命令查看请求响应时间方法
Nov 04 #Javascript
JS创建对象的写法示例
Nov 04 #Javascript
微信公众号支付H5调用支付解析
Nov 04 #Javascript
You might like
php实现猴子选大王问题算法实例
2015/04/20 PHP
AJAX的使用方法详解
2017/04/29 PHP
PHP实现的杨辉三角求解算法分析
2019/03/11 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
FCK调用方法..
2006/12/21 Javascript
JavaScript 动态改变图片大小
2009/06/11 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
pyramid配置session的方法教程
2013/11/27 Python
python解析xml文件实例分析
2015/05/27 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
Python实现FTP文件传输的实例
2019/07/07 Python
Django中间件基础用法详解
2019/07/18 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
python自动从arxiv下载paper的示例代码
2020/12/05 Python
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
手术室护士长竞聘书
2014/03/31 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
离婚协议书包括哪些内容
2014/10/16 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
详解Spring事件发布与监听机制
2021/06/30 Java/Android