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 可排列的表实现代码
Nov 13 Javascript
JavaScript中使用replace结合正则实现replaceAll的效果
Jun 04 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
May 27 Javascript
jquery简单插件制作(fn.extend)完整实例
May 24 Javascript
Angular2 (RC4) 路由与导航详解
Sep 21 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
Jan 26 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
Jul 23 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
Nov 21 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
Apr 17 Javascript
Vue组件通信的几种实现方法
Apr 25 Javascript
微信小程序JS加载esmap地图的实例详解
Sep 04 Javascript
微信小程序列表时间戳转换实现过程解析
Oct 12 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中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
php实现的网络相册图片防盗链完美破解方法
2015/07/01 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
PHP7新特性
2021/03/09 PHP
网页开发中的容易忽略的问题 javascript HTML中的table
2009/04/15 Javascript
原生js实现日期联动
2015/01/12 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
javascript中活灵活现的Array对象详解
2016/11/30 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
canvas实现钟表效果
2017/02/13 Javascript
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
React Native中Mobx的使用方法详解
2018/12/04 Javascript
实用Javascript调试技巧分享(小结)
2019/06/18 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
vue 获取url参数、get参数返回数组的操作
2020/11/12 Javascript
django 自定义用户user模型的三种方法
2014/11/18 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
深入解析Python中的线程同步方法
2016/06/14 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
python TCP包注入方式
2020/05/05 Python
浅析Python requests 模块
2020/10/09 Python
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
Pureology官网:为染色头发打造最好的产品
2019/09/13 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
大学生创业计划书的用途
2014/01/08 职场文书
优秀实习生感言
2014/03/01 职场文书
爱心捐款活动总结
2015/05/09 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
2016五一手机促销广告语
2016/01/28 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers