js编码、解码函数介绍及其使用示例


Posted in Javascript onSeptember 05, 2013

js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

1、传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。
例如:
<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7& u='+encodeURIComponent
("http://cang.baidu.com/bruce42")+'">退出</a& gt;');</script>

2、进行url跳转时可以整体使用encodeURI
例如: Location.href=encodeURI(http://cang.baidu.com/do/s?word=中国&ct=21);
使用这个方法编码的字符在PHP中可以使用urldecode()函数反编码

3、js使用数据时可以使用escape
escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

附上这个三个函数的介绍:

escape 方法
对 String 对象编码以便它们能在所有计算机上可读,
escape(charString)
必选项 charstring 参数是要编码的任意 String 对象或文字。
说明
escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,
其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 "%20" 。
字符值大于 255 的以 %uxxxx 格式存储。
注意 escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURI 和encodeURIComponent 方法。

encodeURI 方法
将文本字符串编码为一个有效的统一资源标识符 (URI)。
encodeURI(URIString)
必选的 URIString 参数代表一个已编码的 URI。
说明
encodeURI 方法返回一个编码的 URI。如果您将编码结果传递给 decodeURI,那么将返回初始的字符串。encodeURI 方法不会对下列字符进行编码:":"、
"/"、";" 和 "?"。请使用 encodeURIComponent 方法对这些字符进行编码。

encodeURIComponent 方法
将文本字符串编码为一个统一资源标识符 (URI) 的一个有效组件。
encodeURIComponent(encodedURIString)
必选的 encodedURIString 参数代表一个已编码的 URI 组件。

说明
encodeURIComponent 方法返回一个已编码的 URI。如果您将编码结果传递给 decodeURIComponent,那么将返回初始的字符串。因为 encodeURIComponent
方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结
果被作为请求发送到 web 服务器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行编码。

Javascript 相关文章推荐
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
Chrome扩展页面动态绑定JS事件提示错误
Feb 11 Javascript
原生JS实现美图瀑布流布局赏析
Sep 07 Javascript
jQuery检测滚动条是否到达底部
Dec 15 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
Apr 26 Javascript
javascript insertAfter()定义与用法示例
Jul 25 Javascript
全面解析Angular中$Apply()及$Digest()的区别
Aug 04 Javascript
微信小程序 教程之wxapp视图容器 swiper
Oct 19 Javascript
vue系列之动态路由详解【原创】
Sep 10 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
Jan 18 jQuery
vue导航栏部分的动态渲染实例
Nov 01 Javascript
js获取图片的base64编码并压缩
Dec 05 Javascript
Jquery中给animation加更多的运作效果实例
Sep 05 #Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
Sep 05 #Javascript
jQuery关于导航条背景切换效果实现示例
Sep 04 #Javascript
JS控制阿拉伯数字转为中文大写示例代码
Sep 04 #Javascript
JS如何将UTC格式时间转本地格式
Sep 04 #Javascript
js 窗口抖动示例
Sep 04 #Javascript
js格式化货币数据实现代码
Sep 04 #Javascript
You might like
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
[原创]php简单防盗链验证实现方法
2016/07/09 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
一些不错的js函数ajax
2008/08/20 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
2013/08/26 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
2015/04/16 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
js实现上一页下一页的效果【附代码】
2016/03/10 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
JS &amp; JQuery 动态添加 select option
2016/06/08 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
详解ES6之用let声明变量以及let loop机制
2017/07/15 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
Vue 中 filter 与 computed 的区别与用法解析
2019/11/21 Javascript
vue实现井字棋游戏
2020/09/29 Javascript
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
对Python Class之间函数的调用关系详解
2019/01/23 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
详解用 python-docx 创建浮动图片
2021/01/24 Python
新百伦折扣店:Joe’s New Balance Outlet
2016/08/20 全球购物
学生发电厂实习自我鉴定
2013/09/22 职场文书
仓库管理专业个人的自我评价
2013/12/30 职场文书
会计专业个人求职信范文
2014/01/08 职场文书
关于工资低的辞职信
2014/01/14 职场文书
汽车专业求职信
2014/06/05 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
秋收起义观后感
2015/06/11 职场文书
公司职员入党自传书
2015/06/26 职场文书
保护地球的宣传语
2015/07/13 职场文书
药房管理制度范本
2015/08/06 职场文书