url 特殊字符 传递参数解决方法


Posted in Javascript onJanuary 01, 2010

十六进制值
1. + URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F
4. ? 分隔实际的 URL 和参数 %3F
5. % 指定特殊字符 %25
6. # 表示书签 %23
7. & URL 中指定的参数间的分隔符 %26
8. = URL 中指定参数的值 %3D

解决的方法:
replace() 方法如果直接用str.replace("-","!") 只会替换第一个匹配的字符.
而str.replace(/\-/g,"!")则可以替换掉全部匹配的字符(g为全局标志)。
replace()
js中替换字符变量如下:

 data2=data2.replace(/\%/g,"%25");
 data2=data2.replace(/\#/g,"%23");
 data2=data2.replace(/\&/g,"%26");

其他一些资料。。。仅供参考。。。

在使用url进行参数传递时,经常会传递一些中文名(或含有特殊字符)的参数或URL地址,在后台处理时会发生转换错误。在有些传递页面使用GB2312,而在接收页面使用UTF8,这样接收到的参数就可能会与原来发生不一致。使用服务器端的urlEncode函数编码的URL,与使用客户端java的encodeURI函数编码的URL,结果就不一样。

java对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

java中的编码方法:
escape() 方法:采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。unescape方法与此相反。不会被此方法编码的字符: @ * / +

encodeURI()方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '

encodeURIComponent ()方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。不会被此方法编码的字符:! * ( )

因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用 escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者 encodeURIComponent。

另外,encodeURI/encodeURIComponent是在java1.5之后引进的,escape则在java1.0版本就有。
1、  传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。

   例如:< language="java">write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a>');</>

2、  进行url跳转时可以整体使用encodeURI

例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");

3、  js使用数据时可以使用escape

例如:搜藏中history纪录。

4、  escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。

最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)

escape不编码字符有69个:*,+,-,.

Javascript 相关文章推荐
基于jQuery的倒计时实现代码
May 30 Javascript
原生javascript实现无间缝滚动示例
Jan 28 Javascript
jQuery实现友好的轮播图片特效
Jan 12 Javascript
2种jQuery 实现刮刮卡效果
Feb 01 Javascript
js添加绑定事件的方法
May 15 Javascript
详解JavaScript中双等号引起的隐性类型转换
May 30 Javascript
模板视图和AngularJS之间冲突的解决方法
Nov 22 Javascript
利用D3.js实现最简单的柱状图示例代码
Dec 09 Javascript
Bootstrap3 多选和单选框(checkbox)
Dec 29 Javascript
js 函数式编程学习笔记
Mar 25 Javascript
Vue如何实现组件的源码解析
Jun 08 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
Aug 19 Javascript
JavaScript 数组循环引起的思考
Jan 01 #Javascript
javascript eval和JSON之间的联系
Dec 31 #Javascript
js下用gb2312编码解码实现方法
Dec 31 #Javascript
JavaScript 学习笔记(七)字符串的连接
Dec 31 #Javascript
JavaScript 学习笔记(六)
Dec 31 #Javascript
JavaScript 学习笔记(五)
Dec 31 #Javascript
JavaScript 学习笔记(四)
Dec 31 #Javascript
You might like
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
DOMAssitant最新版 DOMAssistant 2.5发布
2007/12/25 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
2019/02/01 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
JQuery属性操作与循环用法示例
2019/05/15 jQuery
js尾调用优化的实现
2019/05/23 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
[01:02:55]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
在Python中使用判断语句和循环的教程
2015/04/25 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
Python实现的用户登录系统功能示例
2018/02/05 Python
tensorflow实现KNN识别MNIST
2018/03/12 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
德国珠宝和配件商店:Styleserver
2021/02/23 全球购物
写给学生的新学期寄语
2014/01/18 职场文书
小区门卫值班制度
2014/01/24 职场文书
公司面试感谢信
2014/02/01 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
初中政治教学反思
2016/02/23 职场文书
2016年全国爱牙日宣传活动总结
2016/04/05 职场文书
话题作文之呼唤
2019/12/18 职场文书
CSS实现多个元素在盒子内两端对齐效果
2021/03/30 HTML / CSS
mysql字符串截取函数小结
2021/04/05 MySQL
Python 一键获取电脑浏览器的账号密码
2022/05/11 Python