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 相关文章推荐
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
Apr 12 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
Jul 17 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
Apr 23 Javascript
Javascript保存网页为图片借助于html2canvas库实现
Sep 05 Javascript
JavaScript Split()方法
Dec 18 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
Feb 18 Javascript
如何编写jquery插件
Mar 29 jQuery
Angular指令之restict匹配模式的详解
Jul 27 Javascript
jQuery pjax 应用简单示例
Sep 20 jQuery
webpack4.0 入门实践教程
Oct 08 Javascript
使用React手写一个对话框或模态框的方法示例
Apr 25 Javascript
js实现翻牌小游戏
Jul 31 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目录导航文件代码
2006/10/09 PHP
PHP文件打开、关闭、写入的判断与执行代码
2011/05/24 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
2015/01/07 PHP
PHP 使用memcached简单示例分享
2015/03/05 PHP
PHP.vs.JAVA
2016/04/29 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
js 处理URL实用技巧
2010/11/23 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
原生javascript模仿win8等待提示圆圈进度条
2014/04/24 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
JavaScript极简入门教程(二):对象和函数
2014/10/25 Javascript
javascript数据类型示例分享
2015/01/19 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
Python模拟用户登录验证
2017/09/11 Python
Python快速排序算法实例分析
2017/11/29 Python
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
药学专业学生的自我评价分享
2014/02/06 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
党员承诺书格式范文
2015/04/28 职场文书
孔子观后感
2015/06/08 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
听课评课活动心得体会
2016/01/15 职场文书