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 相关文章推荐
jQuery live( type, fn ) 委派事件实现
Oct 11 Javascript
JSQL 批量图片切换的实现代码
May 05 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
Jan 08 Javascript
jquery的相对父元素和相对文档定位示例代码
Aug 02 Javascript
js setTimeout()函数介绍及应用以倒计时为例
Dec 12 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
Dec 31 Javascript
JS实现选择TextArea内文本的方法
Aug 03 Javascript
如何屏蔽防止别的网站嵌入框架代码
Aug 24 Javascript
AngularJS开发教程之控制器之间的通信方法分析
Dec 25 Javascript
jQuery 控制文本框自动缩小字体填充
Jun 16 jQuery
详解webpack 多入口配置
Jun 16 Javascript
js实现简单商品筛选功能
Feb 02 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面向对象编程快速入门
2006/12/14 PHP
PHP修改session_id示例代码
2014/01/08 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
javascript 跳转代码集合
2009/12/03 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
使用JQ来编写最基本的淡入淡出效果附演示动画
2014/10/31 Javascript
jQuery操作DOM之获取表单控件的值
2015/01/23 Javascript
javascript多行字符串的简单实现方式
2015/05/04 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
python实现类之间的方法互相调用
2018/04/29 Python
Python3最长回文子串算法示例
2019/03/04 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
django将数组传递给前台模板的方法
2019/08/06 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
分享一个python的aes加密代码
2020/12/22 Python
自我评价的正确写法
2013/09/19 职场文书
消防工作实施方案
2014/06/09 职场文书
银行授权委托书样本
2014/10/13 职场文书
二年级数学教学反思
2016/02/16 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP
Apache POI的基本使用详解
2021/11/07 Servers