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 相关文章推荐
按下Enter焦点移至下一个控件的实现js代码
Dec 11 Javascript
jQuery CSS()方法改变现有的CSS样式表
Sep 09 Javascript
JS运动框架之分享侧边栏动画实例
Mar 03 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
Mar 19 Javascript
jQuery on()绑定动态元素出现的问题小结
Feb 19 Javascript
Web打印解决方案之普通报表打印功能
Aug 29 Javascript
Bootstrap模态框插件使用详解
May 11 Javascript
React/Redux应用使用Async/Await的方法
Nov 16 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
Sep 27 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
Sep 28 Javascript
vue无限轮播插件代码实例
May 10 Javascript
JS中forEach()、map()、every()、some()和filter()的用法
May 11 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函数解决SQL injection
2006/12/09 PHP
php下通过POST还是GET来传值
2008/06/05 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
typecho插件编写教程(二):写一个新插件
2015/05/28 PHP
用php+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
javascript prototype原型操作笔记
2009/12/07 Javascript
JQuery的html(data)方法与&amp;lt;script&amp;gt;脚本块的解决方法
2010/03/09 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
pycharm 使用心得(七)一些实用功能介绍
2014/06/06 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
Python中包的用法及安装
2020/02/11 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
2020/09/05 Python
商得四方公司面试题(gid+)
2014/04/30 面试题
毕业生的求职信范文分享
2013/12/04 职场文书
机械系毕业生求职信
2014/05/28 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
城管个人总结
2015/02/28 职场文书
垂直极限观后感
2015/06/08 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
田径运动会通讯稿
2015/07/18 职场文书
图书借阅制度范本
2015/08/06 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js
Spring Boot优化后启动速度快到飞起技巧示例
2022/07/23 Java/Android