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 相关文章推荐
个人总结的一些关于String、Function、Array的属性和用法
Jan 10 Javascript
jquery的ajax请求全面了解
Mar 20 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
Apr 25 Javascript
JavaScript实现简单的二级导航菜单实例
Apr 15 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
Jun 18 Javascript
Vue.js 60分钟快速入门教程
Mar 28 Javascript
判断颜色是否合法的正则表达式(详解)
May 03 Javascript
微信小程序使用swiper组件实现层叠轮播图
Nov 04 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
Mar 04 Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
Oct 28 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
Apr 21 Javascript
jQuery 添加元素和删除元素的方法
Jul 15 jQuery
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
phpwind中的数据库操作类
2007/01/02 PHP
php 图片上传类代码
2009/07/17 PHP
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
2007/08/13 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
同时使用n个window onload加载实例介绍
2013/04/25 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
jquery实现ajax提交form表单的方法总结
2014/03/03 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
Linux系统上Nginx+Python的web.py与Django框架环境
2015/12/25 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
Python HTMLTestRunner库安装过程解析
2020/05/25 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
Html5 new XMLHttpRequest()监听附件上传进度
2021/01/14 HTML / CSS
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
Pamela Love官网:纽约设计师Pamela Love的精美、时尚和穿孔珠宝
2020/10/19 全球购物
文秘专业个人求职信
2013/12/22 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
2014小学年度工作总结
2014/12/20 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
利用Java连接Hadoop进行编程
2022/06/28 Java/Android