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 相关文章推荐
Firefox和IE浏览器兼容JS脚本写法小结
Jul 07 Javascript
jQuery Validation插件remote验证方式的Bug解决
Jul 01 Javascript
Javascript this 的一些学习总结
Aug 02 Javascript
jquery attr方法获取input的checked属性问题
May 26 Javascript
解决js下referer兼容各大浏览器的方法
Nov 03 Javascript
jQuery多个input求和的实现方法
Feb 12 Javascript
获取JS中网页各种高宽与位置的方法总结
Jul 27 Javascript
利用jquery获取select下拉框的值
Nov 23 Javascript
100行代码理解和分析vue2.0响应式架构
Mar 09 Javascript
js截取字符串功能的实现方法
Sep 27 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
Nov 22 Javascript
Bootstrap 按钮样式与使用代码详解
Dec 09 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实现下载CSS文件中的图片
2015/12/06 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
2015/05/19 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
12条写出高质量JS代码的方法
2018/01/07 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
2018/01/17 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
koa-router路由参数和前端路由的结合详解
2019/05/19 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
关于Python如何避免循环导入问题详解
2017/09/14 Python
python Celery定时任务的示例
2018/03/13 Python
pandas将DataFrame的列变成行索引的方法
2018/04/10 Python
Pytorch之保存读取模型实例
2019/12/30 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
基于HTML5的WebSocket的实例代码
2018/08/15 HTML / CSS
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
数学国培研修感言
2014/02/13 职场文书
暑期研修感言
2014/02/17 职场文书
青年志愿者活动总结
2014/04/26 职场文书
感恩教育活动总结
2014/05/05 职场文书
土建施工员岗位职责
2014/07/16 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
幼儿学前班评语
2014/12/29 职场文书
详解Javascript实践中的命令模式
2021/05/05 Javascript
Java反应式框架Reactor中的Mono和Flux
2021/07/25 Java/Android
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技