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 相关文章推荐
模仿JQuery sortable效果 代码有错但值得看看
Nov 05 Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
Mar 25 Javascript
模拟多级复选框效果的jquery代码
Aug 13 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
Jan 12 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
Apr 08 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
Jan 02 Javascript
jquery插件Jplayer使用方法简析
Apr 22 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
Aug 18 Javascript
理解 JavaScript EventEmitter
Mar 29 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
Jun 07 Javascript
js实现计时器秒表功能
Dec 16 Javascript
基于VUE实现判断设备是PC还是移动端
Jul 03 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随机数生成代码与使用实例分析
2011/04/08 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
PHP反向代理类代码
2014/08/15 PHP
php通过session防url攻击方法
2014/12/10 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
从零学习node.js之简易的网络爬虫(四)
2017/02/22 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
Python实现删除文件但保留指定文件
2015/06/21 Python
python实现图片处理和特征提取详解
2017/11/13 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
运用PyTorch动手搭建一个共享单车预测器
2019/08/06 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
python实现处理mysql结果输出方式
2020/04/09 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
中专毕业生自我鉴定范文
2013/11/09 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
邀请书格式范文
2015/02/02 职场文书
书法社团活动总结
2015/05/07 职场文书
2015年科协工作总结
2015/05/19 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技
Java死锁的排查
2022/05/11 Java/Android
Mysql如何查看是否使用到索引
2022/12/24 MySQL