JavaScript中各种编码解码函数的区别和注意事项


Posted in Javascript onAugust 19, 2010

大家在使用JS提交数据时,尤其是中文的时候,经常会需要将要提交的字符串进行URL编码。在JS中对字符串进行URL编码有好几种方 法,encodeURI,encodeURIComponent,还有escape。在我看到的很多代码中escape这个函数用的最多,不过这个函数却 是不推荐使用的。下面我们来分别看看这几个函数:


encodeURI:对指定的字符串进行URL编码,不包括 : # / \ = & 这些URL中的关键字符。


encodeURIComponent:对字符串中的字符进行编码,包括URL中的特殊字符。


escape:这个是JS比较早期版本的函数,这个函数中处理unicode字符的时候会有些问题。

代码如下:

var url = "http://www.abc.com?q=aa& amp;b=呵呵"; 
var encodedUrl = encodeURI(url); 
alert(encodedUrl); //输出:http://www.abc.com?q=aa&b=%E5%91%B5%E5%91%B5 
encodedUrl = encodeURIComponent(url); 
alert(encodedUrl); //输出:http%3A%2F %2Fwww.abc.com%3Fq%3Daa%26b%3D%E5%91%B5%E5%91%B5 
alert(escape(url)); //输出:http%3A//www.abc.com%3Fq%3Daa%26b%3D%u5475%u5475

如上所示,escape函数中处理中文字符的时候,都会转换成%uxxxx这种形式,显然这个和URL编码的格式不一样,而 encodeURIComponent函数编码是最彻底的,如果没有特殊需要的话,encodeURIComponent这个函数是比较常用的,当然,也 许我们使用escape也不会有什么问题,也许你的服务端语言也能够正常的解析出来,不过这个函数在处理unicode字符的时候还不是很标准,所以这里 建议大家使用encodeURIComponent和decodeURIComponent这对函数来对字符串进行URL编码和解码。

Javascript 相关文章推荐
JavaScript初学者需要了解10个小技巧
Aug 25 Javascript
jquery的trigger和triggerHandler的区别示例介绍
Apr 20 Javascript
javascript操作符"!~"详解
Feb 10 Javascript
JavaScript使用yield模拟多线程的方法
Mar 19 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
Mar 31 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
Jul 28 Javascript
JavaScript数据结构链表知识详解
Nov 21 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
Jan 21 Javascript
详解React+Koa实现服务端渲染(SSR)
May 23 Javascript
微信小程序常用简易小函数总结
Feb 01 Javascript
推荐15个最好用的JavaScript代码压缩工具
Feb 13 Javascript
微信小程序制作扭蛋机代码实例
Sep 24 Javascript
jquery插件之easing使用
Aug 19 #Javascript
为Extjs加加速(javascript加速)
Aug 19 #Javascript
原创javascript小游戏实现代码
Aug 19 #Javascript
jQuery与ExtJS之选择实例分析
Aug 19 #Javascript
JQuery跨Iframe选择实现代码
Aug 19 #Javascript
JQuery中each()的使用方法说明
Aug 19 #Javascript
jquery获取input的value问题说明
Aug 19 #Javascript
You might like
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
PHP时间处理类操作示例
2018/09/05 PHP
匹配任意字符的正则表达式写法
2010/04/29 Javascript
原创javascript小游戏实现代码
2010/08/19 Javascript
JavaScript 打地鼠游戏代码说明
2010/10/12 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
2016/08/19 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
Angular利用trackBy提升性能的方法
2018/01/26 Javascript
js传递数组参数到后台controller的方法
2018/03/29 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
2020/09/04 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
Python实现Dijkstra算法
2018/10/17 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
python实现简单遗传算法
2020/09/18 Python
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
商务日语专业毕业生求职信
2013/10/26 职场文书
2014年最新学习全国两会精神心得
2014/03/17 职场文书
个人授权委托书
2014/04/03 职场文书
机械专业求职信范文
2014/07/15 职场文书
2014年社区重阳节活动策划方案
2014/09/16 职场文书
海洋天堂观后感
2015/06/05 职场文书
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers