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 相关文章推荐
html数组字符串拼接的最快方法
Sep 16 Javascript
浅析AngularJS Filter用法
Dec 28 Javascript
理解JS绑定事件
Jan 19 Javascript
学习JavaScript设计模式之迭代器模式
Jan 19 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
Jan 29 Javascript
使用jQuery加载html页面到指定的div实现方法
Jul 13 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
Dec 26 Javascript
JS实现点击链接切换显示隐藏内容的方法
Oct 19 Javascript
node puppeteer(headless chrome)实现网站登录
May 09 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
May 01 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
Nov 06 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
Feb 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
PHP读取大文件的类SplFileObject使用介绍
2014/04/09 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
2017/05/23 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
vue下拉列表功能实例代码
2018/04/08 Javascript
JavaScript常用数学函数用法示例
2018/05/14 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
2018/08/17 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
在python中使用nohup命令说明
2020/04/16 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
《听鱼说话》教学反思
2014/02/15 职场文书
戒赌保证书
2015/05/11 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript
python中 Flask Web 表单的使用方法
2022/05/20 Python
ant design vue的form表单取值方法
2022/06/01 Vue.js
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技