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 相关文章推荐
jquery.combobox中文api和例子,修复了上面的小bug
Mar 28 Javascript
Prototype源码浅析 Enumerable部分(二)
Jan 18 Javascript
影响jQuery使用的14个方面
Sep 01 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
Aug 10 Javascript
深入浅析JavaScript中的Function类型
Jul 09 Javascript
javascript 四十条常用技巧大全
Sep 09 Javascript
学习使用Bootstrap栅格系统
May 11 Javascript
JScript实现表格的简单操作
Aug 15 Javascript
教你用Cordova打包Vue项目的方法
Oct 17 Javascript
JS实现读取xml内容并输出到div中的方法示例
Apr 19 Javascript
使用vue的transition完成滑动过渡的示例代码
Jun 25 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
Sep 14 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
PHP4.04简明安装
2006/10/09 PHP
PHP循环结构实例讲解
2014/02/10 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
javascript 打印页面代码
2009/03/24 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
Js组件的一些写法
2010/09/10 Javascript
JavaScript实现页面5秒后自动跳转的方法
2015/04/16 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
利用Vue实现移动端图片轮播组件的方法实例
2017/08/23 Javascript
基于JS实现带动画效果的流程进度条
2018/06/01 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
ES10 特性的完整指南小结
2019/03/04 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
python之从文件读取数据到list的实例讲解
2018/04/19 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
django框架模板语言使用方法详解
2019/07/18 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
opencv 图像腐蚀和图像膨胀的实现
2020/07/07 Python
Python 如何创建一个简单的REST接口
2020/07/30 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
音乐专业应届生教师求职信
2013/11/04 职场文书
环保志愿者活动总结
2014/06/27 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
六年级学生期末评语
2014/12/26 职场文书