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变量
May 25 Javascript
JS命名空间的另一种实现
Aug 09 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
Oct 16 Javascript
Jquery焦点与失去焦点示例应用
Jun 10 Javascript
jQuery学习总结之jQuery事件
Jun 30 Javascript
JS设置cookie、读取cookie、删除cookie
Apr 17 Javascript
Vue-router 类似Vuex实现组件化开发的示例
Sep 15 Javascript
JavaScript适配器模式详解
Oct 19 Javascript
node文字生成图片的示例代码
Oct 26 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
Jul 10 Javascript
详解Webpack loader 之 file-loader
Nov 07 Javascript
Vue2.x通用编辑组件的封装及应用详解
May 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
CodeIgniter基本配置详细介绍
2013/11/12 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
asp.net和php的区别点总结
2019/10/10 PHP
文档对象模型DOM通俗讲解
2013/11/01 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
js实现消息滚动效果
2017/01/18 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
Python基础教程之利用期物处理并发
2018/03/29 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
基于Django框架的权限组件rbac实例讲解
2019/08/31 Python
django 实现celery动态设置周期任务执行时间
2019/11/19 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
python else语句在循环中的运用详解
2020/07/06 Python
纯CSS3制作漂亮带动画效果的主机价格表
2015/04/25 HTML / CSS
24个canvas基础知识小结
2014/12/17 HTML / CSS
日常奢侈品,轻松购物:Verishop
2019/08/20 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
学生的自我鉴定范文
2013/10/24 职场文书
会计主管岗位职责范文
2013/11/08 职场文书
酒鬼酒广告词
2014/03/21 职场文书
一年级学生评语
2014/04/23 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
单位提档介绍信
2015/10/22 职场文书
再见,2019我们不负使命;你好,2020我们砥砺前行
2020/01/03 职场文书