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 相关文章推荐
JS 密码强度验证(兼容IE,火狐,谷歌)
Mar 15 Javascript
最佳的addEvent事件绑定是怎样诞生的
Oct 24 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
Jun 20 Javascript
jQuery 属性选择器element[herf*='value']使用示例
Oct 20 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
Dec 17 Javascript
jquery中 $.expr使用实例介绍
Jun 09 Javascript
javascript中call,apply,bind的用法对比分析
Feb 12 Javascript
浅谈EasyUI中编辑treegrid的方法
Mar 01 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
May 04 Javascript
利用Javascript仿Excel的数据透视分析功能
Sep 07 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
Sep 18 Javascript
使用preload预加载页面资源时注意事项
Feb 03 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
图象函数中的中文显示
2006/10/09 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
php中使用gd库实现下载网页中所有图片
2015/05/12 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
js Dialog 实践分享
2012/10/22 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
iview同时验证多个表单问题总结
2018/09/29 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
Python open读写文件实现脚本
2008/09/06 Python
Python实现的堆排序算法示例
2018/04/29 Python
python3.4 将16进制转成字符串的实例
2019/06/12 Python
python梯度下降算法的实现
2020/02/24 Python
python如何删除文件、目录
2020/06/23 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
python实现银行账户系统
2021/02/22 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
几个Linux面试题笔试题
2016/08/01 面试题
linux面试题参考答案(10)
2016/10/26 面试题
美容院店长岗位职责
2014/04/08 职场文书
教师考核材料
2014/05/21 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
大学军训的体会
2014/11/08 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android