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 相关文章推荐
jquery实现固定顶部导航效果(仿蘑菇街)
Mar 21 Javascript
通过onmouseover选项卡实现img图片的变化
Feb 12 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
Aug 25 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
Apr 16 Javascript
Angular2 环境配置详细介绍
Sep 21 Javascript
jquery.masonry瀑布流效果
May 25 jQuery
vue toggle做一个点击切换class(实例讲解)
Mar 13 Javascript
JS将网址url转化为JSON格式的方法
Jul 02 Javascript
微信小程序canvas绘制圆角base64图片的实现
Aug 18 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
Feb 09 Javascript
js对象简介与基本用法示例
Mar 13 Javascript
JS如何判断对象是否包含某个属性
Aug 29 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
global.php
2006/12/09 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
2010/09/01 PHP
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
php中自定义函数dump查看数组信息类似var_dump
2014/01/27 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
javascript中的this详解
2014/12/08 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
Vue点击切换颜色的方法
2018/09/13 Javascript
Vue实现手机计算器
2020/08/17 Javascript
小程序实现左滑删除的效果的实例代码
2020/10/19 Javascript
[16:27]DOTA2 HEROS教学视频教你分分钟做大人-艾欧
2014/06/11 DOTA
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
Python深入学习之闭包
2014/08/31 Python
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
Django实现自定义404,500页面教程
2017/03/26 Python
socket + select 完成伪并发操作的实例
2017/08/15 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
python实现朴素贝叶斯分类器
2018/03/28 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
python如何求解两数的最大公约数
2018/09/27 Python
python 内置模块详解
2019/01/01 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
深入了解Python在HDA中的应用
2019/09/05 Python
python迭代器常见用法实例分析
2019/11/22 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
解决c++调用python中文乱码问题
2020/07/29 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
爱护公共设施倡议书
2014/08/29 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书