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 相关文章推荐
setAttribute 与 class冲突解决
Feb 17 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
Mar 03 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
Mar 13 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 Javascript
js正则表达式replace替换变量方法
May 21 Javascript
webpack+vue.js实现组件化详解
Oct 12 Javascript
轻松理解JavaScript之AJAX
Mar 15 Javascript
Form表单上传文件(type="file")的使用
Aug 03 Javascript
JS 仿支付宝input文本输入框放大组件的实例
Nov 14 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
Aug 16 Javascript
结合axios对项目中的api请求进行封装操作
Sep 21 Javascript
vue如何使用rem适配
Feb 06 Vue.js
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 curl的深入解析
2013/06/02 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
ES6新数据结构Set与WeakSet用法分析
2017/03/31 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
2017/04/07 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
js实现计时器秒表功能
2019/12/16 Javascript
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
python如何将两个txt文件内容合并
2019/10/18 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
Python持续监听文件变化代码实例
2020/07/22 Python
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
个人现实表现材料
2014/02/04 职场文书
求职信怎么写范文
2014/05/26 职场文书
诚实守信演讲稿
2014/09/01 职场文书
终止劳动合同协议书
2014/10/05 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang
python数字转对应中文的方法总结
2021/08/02 Python
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python