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 相关文章推荐
ExtJS TabPanel beforeremove beforeclose使用说明
Mar 31 Javascript
jquery 页面全选框实践代码
Apr 02 Javascript
JS trim去空格的最佳实践
Oct 30 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
Feb 27 Javascript
阻止子元素继承父元素事件具体思路及实现
May 02 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
Nov 11 Javascript
jQuery插件zepto.js简单实现tab切换
Jun 16 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
Sep 06 Javascript
浅谈JQ中mouseover和mouseenter的区别
Sep 13 Javascript
node.js基础知识小结
Feb 26 Javascript
layui2.0使用table+laypage实现真分页
Jul 27 Javascript
Vue3不支持Filters过滤器的问题
Sep 24 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
E路文章系统PHP
2006/12/11 PHP
PHP5常用函数列表(分享)
2013/06/07 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
2015/05/12 PHP
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
用按钮控制iframe显示的网页实现方法
2013/02/04 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
jQuery中find()方法用法实例
2015/01/07 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
angular2中Http请求原理与用法详解
2018/01/11 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
node.js实现带进度条的多文件上传
2020/03/27 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
把vgg-face.mat权重迁移到pytorch模型示例
2019/12/27 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
澳大利亚首屈一指的在线购物目的地:Kogan.com
2017/02/02 全球购物
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
求职简历推荐信范文
2013/12/02 职场文书
员工工作表扬信范文
2014/01/13 职场文书
小学开学典礼主持词
2014/03/19 职场文书
和谐家庭演讲稿
2014/05/24 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
大学教师师德师风演讲稿
2014/08/22 职场文书
暑期政治学习心得体会
2014/09/02 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
浅谈Golang 切片(slice)扩容机制的原理
2021/06/09 Golang
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python
世界十大狙击步枪排行榜
2022/03/20 杂记