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 ready函数滥用分析
Feb 16 Javascript
JavaScript常用验证函数实例汇总
Nov 25 Javascript
jQuery Mobile操作HTML5的常用函数总结
May 17 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
Jul 05 Javascript
基于JavaScript实现轮播图原理及示例
Apr 10 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
Mar 28 jQuery
JS实现二维数组横纵列转置的方法
Apr 17 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
Sep 25 Javascript
jquery实现吸顶导航效果
Jan 08 jQuery
JavaScript常用进制转换及位运算实例解析
Oct 14 Javascript
微信小程序实现底部弹出框
Nov 18 Javascript
Angular CLI发布路径的配置项浅析
Mar 29 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 裁剪图片成固定大小代码方法
2009/09/09 PHP
PHP Stream_*系列函数
2010/08/01 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
使javascript也能包含文件
2006/10/26 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
jquery属性,遍历,HTML操作方法详解
2016/09/17 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
微信小程序 如何引入外部字体库iconfont的图标
2018/01/31 Javascript
vue实现与安卓、IOS交互的方法
2018/11/02 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
2019/06/24 Javascript
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
python selenium自动上传有赞单号的操作方法
2018/07/05 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
执行力心得体会
2013/12/31 职场文书
《中国的气候》教学反思
2014/02/23 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
文案策划专业自荐信
2014/07/07 职场文书
2014年社区重阳节活动策划方案
2014/09/16 职场文书
宾馆客房管理制度
2015/08/06 职场文书
教导处教学工作总结
2015/08/12 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL