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 相关文章推荐
获取中文字符串的实际长度代码
Jun 05 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
Jun 09 Javascript
全面了解javascript中的错误处理机制
Jul 18 Javascript
详解Node.Js如何处理post数据
Sep 19 Javascript
浅谈jquery中next与siblings的区别
Oct 27 Javascript
jquery dialog获取焦点的方法
Feb 09 Javascript
Bootstrap栅格系统简单实现代码
Mar 06 Javascript
详解Angular 开发环境搭建
Jun 22 Javascript
angular1配合gulp和bower的使用教程
Jan 19 Javascript
JavaScript格式化json和xml的方法示例
Jan 22 Javascript
javascript中正则表达式语法详解
Aug 07 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
Oct 14 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学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
PHP编写简单的App接口
2016/08/28 PHP
PHP实现链表的定义与反转功能示例
2018/06/09 PHP
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
Javascript之BOM(window对象)详解
2016/05/25 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
js图片放大镜效果实现方法详解
2020/10/28 Javascript
Vue.js划分组件的方法
2017/10/29 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
2020/04/10 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 战前探营!
2014/05/21 DOTA
Python内置函数reversed()用法分析
2018/03/20 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
CSS3 边框效果
2019/11/04 HTML / CSS
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
新加坡第一的杂货零售商:NTUC FairPrice
2020/12/05 全球购物
如何填写个人简历自我评价
2013/12/10 职场文书
争论的故事教学反思
2014/02/06 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
二手房购房意向书范本
2014/04/01 职场文书
财会专业毕业生自荐信
2014/07/09 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python