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 流畅动画实现原理
Sep 08 Javascript
Jquery插件之多图片异步上传
Oct 20 Javascript
javascript生成随机数的方法
May 16 Javascript
Javascript 中创建自定义对象的方法汇总
Dec 04 Javascript
pc加载更多功能和移动端下拉刷新加载数据
Nov 07 Javascript
JS实现倒计时(天数、时、分、秒)
Nov 16 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
Jan 06 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
Jun 28 Javascript
easyui下拉框动态级联加载的示例代码
Nov 29 Javascript
vue.js系列中的vue-fontawesome使用
Feb 10 Javascript
微信小程序语音同步智能识别的实现案例代码解析
May 29 Javascript
Bootstrap FileInput实现图片上传功能
Jan 28 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
Terran兵种介绍
2020/03/14 星际争霸
php 文章采集正则代码
2009/12/28 PHP
php文件包含的几种方式总结
2019/09/19 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
后台获取ZTREE选中节点的方法
2015/02/12 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
js模糊查询实例分享
2016/12/26 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
深入探究node之Transform
2017/07/20 Javascript
浅谈Angular2 模块懒加载的方法
2017/10/04 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
[02:16]2018年度CS GO最具人气选手-完美盛典
2018/12/16 DOTA
python Django模板的使用方法(图文)
2013/11/04 Python
pyramid配置session的方法教程
2013/11/27 Python
python实现合并两个数组的方法
2015/05/16 Python
Python 查看文件的编码格式方法
2017/12/21 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
python标准库OS模块函数列表与实例全解
2020/03/10 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
Python基于Webhook实现github自动化部署
2020/11/28 Python
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
英国健身专家:WIT Fitness
2021/02/09 全球购物
Python面试题集
2012/03/08 面试题
毕业生应聘幼儿园的自荐信
2013/11/20 职场文书
深入开展党的群众路线教育实践活动心得体会
2014/11/05 职场文书
部队2014年终工作总结
2014/11/27 职场文书
食堂卫生管理制度
2015/08/04 职场文书
创业计划书之物流运送
2019/09/17 职场文书
能让Python提速超40倍的神器Cython详解
2021/06/24 Python