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 相关文章推荐
JS中剪贴板兼容性、判断复制成功或失败
Mar 09 Javascript
Mozilla中显示textarea中选择的文字
Sep 07 Javascript
jquery插件开发方法(初学者)
Feb 03 Javascript
js实现网页自动刷新可制作节日倒计时效果
May 27 Javascript
浅谈被jQuery抛弃的函数及替代函数
May 03 Javascript
AJAX和jQuery动态加载数据的实现方法
Dec 05 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
Jan 26 Javascript
BootStrap 动态表单效果
Jun 02 Javascript
详解在HTTPS 项目中使用百度地图 API
Apr 26 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
Jun 18 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
Oct 30 Javascript
我所理解的JavaScript中的this指向
Sep 04 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 mysql Errcode: 28 终极解决方法
2009/07/01 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
jQuery学习笔记 操作jQuery对象 属性处理
2012/09/19 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
jquery固定底网站底部菜单效果
2013/08/13 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
深入剖析JavaScript:Object类型
2016/05/10 Javascript
JavaScript表单焦点自动切换代码
2016/07/24 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
用python写的一个wordpress的采集程序
2016/02/27 Python
Python实现购物系统(示例讲解)
2017/09/13 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
Python2与Python3的区别实例分析
2019/04/11 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
python实现数据分析与建模
2019/07/11 Python
对python中url参数编码与解码的实例详解
2019/07/25 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
纯CSS改变webkit内核浏览器的滚动条样式
2014/04/17 HTML / CSS
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
工商管理专业实习生自我鉴定
2013/09/29 职场文书
工作疏忽检讨书
2014/01/25 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
纺织工程专业推荐信
2014/09/08 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
python状态机transitions库详解
2021/06/02 Python
Python下opencv库的安装过程及问题汇总
2021/06/11 Python
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python