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 相关文章推荐
仅Firefox中链接A无法实现模拟点击以触发其默认行为
Jul 31 Javascript
js关闭子窗体刷新父窗体实现方法
Dec 04 Javascript
用jquery生成二级菜单的实例代码
Jun 24 Javascript
js中实现多态采用和继承类似的方法
Aug 22 Javascript
jQuery表单事件实例代码分享
Aug 18 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
Sep 21 Javascript
微信小程序实现长按删除图片的示例
May 18 Javascript
Vue+axios实现统一接口管理的方法
Jul 23 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
Sep 14 Javascript
jquery 验证用户名是否重复代码实例
May 14 jQuery
vue路由拦截器和请求拦截器知识点总结
Nov 08 Javascript
基于javascript实现碰撞检测
Mar 12 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
PHP语法速查表
2007/01/02 PHP
PHP5中使用PDO连接数据库的方法
2010/08/01 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
解析argc argv在php中的应用
2013/06/24 PHP
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
Laravel日志用法详解
2016/10/09 PHP
PHP设置Cookie的HTTPONLY属性方法
2017/02/09 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
PHP替换Word中变量并导出PDF图片的实现方法
2020/11/26 PHP
js活用事件触发对象动作
2008/08/10 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
固定背景实现的背景滚动特效示例分享
2013/05/19 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
2014/10/26 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
记录一次websocket封装的过程
2020/11/23 Javascript
python snownlp情感分析简易demo(分享)
2017/06/04 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
2018/06/06 Python
零基础使用Python读写处理Excel表格的方法
2019/05/02 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
Django模板语言 Tags使用详解
2019/09/09 Python
pygame实现贪吃蛇游戏(上)
2019/10/29 Python
HTML5 canvas基本绘图之绘制线段
2016/06/27 HTML / CSS
汽车维修工岗位职责
2014/02/12 职场文书
2014高考励志标语
2014/06/05 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
先进班组材料范文
2014/12/25 职场文书
2015年个人审计工作总结
2015/04/07 职场文书
集结号观后感
2015/06/08 职场文书