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实现UrlEncode和UrlDecode的脚本代码
Jul 23 Javascript
JavaScript获取当前网页标题(title)的方法
Apr 03 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
Aug 18 Javascript
在localStorage中存储对象数组并读取的方法
Sep 24 Javascript
JavaScript仿微博输入框效果(案例分析)
Dec 06 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
Dec 16 Javascript
bootstrap按钮插件(Button)使用方法解析
Jan 13 Javascript
浅谈js中的变量名和函数名重名
Feb 13 Javascript
webpack教程之webpack.config.js配置文件
Jul 05 Javascript
深入理解react 组件类型及使用场景
Mar 07 Javascript
Async/Await替代Promise的6个理由
Jun 15 Javascript
微信小程序的开发范式BeautyWe.js入门详解
Jul 10 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 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
PHP链表操作简单示例
2016/10/15 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
2015/09/04 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
vue跨域解决方法
2017/10/15 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
详解Vue的异步更新实现原理
2020/12/22 Vue.js
wxPython窗口中文乱码解决方法
2014/10/11 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
Python 列表去重去除空字符的例子
2019/07/20 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
Python count函数使用方法实例解析
2020/03/23 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
基于html5实现的图片墙效果
2014/10/16 HTML / CSS
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
消防器材管理制度
2014/01/28 职场文书
绿色环保口号
2014/06/12 职场文书
党校学习个人总结
2015/02/15 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript