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 相关文章推荐
innerText 使用示例
Jan 23 Javascript
js调用后台、后台调用前台等方法总结
Apr 17 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
Feb 25 Javascript
JS实现数组按升序及降序排列的方法
Apr 26 Javascript
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
Jun 12 jQuery
JavaScript实现离开页面前提示功能【附jQuery实现方法】
Sep 26 jQuery
Vue三层嵌套路由的示例代码
May 05 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
Jul 04 Javascript
使用layui实现树形结构的方法
Sep 20 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
Dec 10 Javascript
vue实现拖拽进度条
Mar 01 Vue.js
vue路由实现登录拦截
Mar 24 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
php 求质素(素数) 的实现代码
2011/04/12 PHP
PHP高级编程实例:编写守护进程
2014/09/02 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
jquery实现简单实用的弹出层效果代码
2015/10/15 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
为输入框加入数字js校验代码分享
2017/11/02 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
vue.js 实现点击按钮动态添加li的方法
2018/09/07 Javascript
vuex直接赋值的三种方法总结
2018/09/16 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
Vue模板语法中数据绑定的实例代码
2019/05/17 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
个人求职简历的自我评价
2013/10/19 职场文书
会计学应届毕业生推荐信
2013/11/04 职场文书
四年的大学生生活自我评价
2013/12/09 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
初二生物教学反思
2014/02/03 职场文书
环保建议书600字
2014/05/14 职场文书
职工小家建设活动方案
2014/08/25 职场文书
聘用合同范本
2015/09/21 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
JavaScript中isPrototypeOf函数
2021/11/07 Javascript