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 Konami Code 实现代码
Jul 29 Javascript
JQuery 写的个性导航菜单
Dec 24 Javascript
菜鸟学习JavaScript小实验之函数引用
Nov 17 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
Mar 05 Javascript
vue自定义指令实现v-tap插件
Nov 03 Javascript
Angular ui.bootstrap.pagination分页
Jan 20 Javascript
javascript表达式和运算符详解
Feb 07 Javascript
javascript回调函数的概念理解与用法分析
May 27 Javascript
node.js中使用Export和Import的方法
Sep 18 Javascript
JavaScript中工厂函数与构造函数示例详解
May 06 Javascript
如何基于filter实现网站整体变灰功能
Apr 17 Javascript
vue数据字典取键值项目的字典问题
Apr 12 Vue.js
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
编译问题
2006/10/09 PHP
Mysql的常用命令
2006/10/09 PHP
php 删除无限级目录与文件代码共享
2008/11/22 PHP
CI操作cookie的方法分析(基于helper类库)
2016/03/28 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
PDO::errorCode讲解
2019/01/28 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
提高 DHTML 页面性能
2006/12/25 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
jQuery时间日期三级联动(推荐)
2016/11/27 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
原生JS写Ajax的请求函数功能
2017/12/22 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
Python模块学习 datetime介绍
2012/08/27 Python
Python实现Logger打印功能的方法详解
2017/09/01 Python
python re模块findall()函数实例解析
2018/01/19 Python
python如何从文件读取数据及解析
2019/09/19 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
CSS实现半透明边框与多重边框的场景分析
2019/11/13 HTML / CSS
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
大班幼儿评语大全
2014/04/30 职场文书
拉拉队口号
2014/06/16 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
外贸英文求职信范文
2015/03/19 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
研讨会致辞
2015/07/31 职场文书
爱国主义主题班会
2015/08/14 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
nginx配置虚拟主机的详细步骤
2021/07/21 Servers
VUE递归树形实现多级列表
2022/07/15 Vue.js