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 相关文章推荐
脚本吧 - 幻宇工作室用到js,超强推荐base.js
Dec 23 Javascript
解决jquery异步按一定的时间间隔刷新问题
Dec 10 Javascript
jqueyr判断checkbox组的选中(示例代码)
Nov 08 Javascript
JS实现根据当前文字选择返回被选中的文字
May 21 Javascript
在Node.js中实现文件复制的方法和实例
Jun 05 Javascript
JavaScript 基本概念
Jan 20 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
Jun 15 Javascript
vue实现element-ui对话框可拖拽功能
Aug 17 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
Sep 21 Javascript
ES6 Map结构的应用实例分析
Jun 26 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
Sep 18 Javascript
详解vue中v-model和v-bind绑定数据的异同
Aug 10 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
用php过滤危险html代码的函数
2008/07/22 PHP
php读取javascript设置的cookies的代码
2010/04/12 PHP
Yii框架获取当前controlle和action对应id的方法
2014/12/03 PHP
PHP实现格式化文件数据大小显示的方法
2015/01/03 PHP
PHP调用Mailgun发送邮件的方法
2017/05/04 PHP
PHP递归的三种常用方式
2019/02/28 PHP
PHP重载基础知识回顾
2020/09/10 PHP
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
Python 初始化多维数组代码
2008/09/06 Python
python getopt 参数处理小示例
2009/06/09 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
python实现简单爬虫功能的示例
2016/10/24 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
Keras load_model 导入错误的解决方式
2020/06/09 Python
常用的10个Python实用小技巧
2020/08/10 Python
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
创业计划书如何吸引他人眼球
2014/01/10 职场文书
员工考核评语大全
2014/04/26 职场文书
初中学校对照检查材料
2014/08/19 职场文书
幼儿园小班见习报告
2014/10/31 职场文书