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 相关文章推荐
javascript onmouseout 解决办法
Jul 17 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
Aug 10 Javascript
javascript编码的几个方法详细介绍
Jan 06 Javascript
js设置组合快捷键/tabindex功能的方法
Nov 21 Javascript
javascript if条件判断方法小结
May 17 Javascript
延时加载JavaScript代码提高速度
Dec 27 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
Jun 13 Javascript
Vue表单实例代码
Sep 05 Javascript
JQuery和HTML5 Canvas实现弹幕效果
Jan 04 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
Aug 27 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
Aug 22 Javascript
JavaScript中的几种继承方法示例
Dec 06 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
php写的简易聊天室代码
2011/06/04 PHP
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
jquery 注意事项与常用语法小结
2010/06/07 Javascript
基于JQuery的一句代码实现表格的简单筛选
2010/07/26 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
js控制input输入字符解析
2013/12/27 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
详解js树形控件—zTree使用总结
2016/12/28 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
Vue父子组件双向绑定传值的实现方法
2018/07/31 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
Python环境变量设置方法
2016/08/28 Python
python常用知识梳理(必看篇)
2017/03/23 Python
pyqt5自定义信号实例解析
2018/01/31 Python
python基础教程项目二之画幅好画
2018/04/02 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
python实现测试工具(二)——简单的ui测试工具
2020/10/19 Python
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
高级技校毕业生自荐信
2013/11/18 职场文书
新郎新娘婚礼答谢词
2014/01/11 职场文书
信息技术教学反思
2014/02/12 职场文书
社区交通安全实施方案
2014/03/22 职场文书
毕业留言寄语大全
2014/04/10 职场文书
反邪教警示教育活动总结
2015/05/09 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
详解JavaScript中Arguments对象用途
2021/08/30 Javascript
python单向链表实例详解
2022/05/25 Python