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 相关文章推荐
科讯商业版中用到的ajax空间与分页函数
Sep 02 Javascript
javascript 关于# 和 void的区别分析
Oct 26 Javascript
深入分析js的冒泡事件
Dec 05 Javascript
jQuery中offsetParent()方法用法实例
Jan 19 Javascript
javascript使用avalon绑定实现checkbox全选
May 06 Javascript
如何动态加载外部Javascript文件
Dec 02 Javascript
JavaScript中将数组进行合并的基本方法讲解
Mar 07 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
May 17 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
Jun 16 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
Jan 23 Javascript
详解node字体压缩插件font-spider的用法
Sep 28 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
Feb 09 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仿ZOL分页类代码
2008/10/02 PHP
浅谈php优化需要注意的地方
2014/11/27 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
MooTools 1.2介绍
2009/09/14 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
javascript中input中readonly和disabled区别介绍
2012/10/23 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
vue-cli3跨域配置的简单方法
2019/09/06 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
vant实现购物车功能
2020/06/29 Javascript
使用python实现生成用户信息
2017/03/20 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
Django配置MySQL数据库的完整步骤
2019/09/07 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
Python如何批量生成和调用变量
2020/11/21 Python
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
戴森美国官网:Dyson美国
2016/09/11 全球购物
意大利在线高尔夫商店:Online Golf
2021/03/09 全球购物
局部内部类是否可以访问非final变量?
2013/04/20 面试题
打架检讨书800字
2014/01/10 职场文书
大学生志愿者感言
2014/01/15 职场文书
中学生打架检讨书
2014/10/13 职场文书
普通员工辞职信范文
2015/05/12 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server
Linux安装apache服务器的配置过程
2021/11/27 Servers
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers