如何通过JS实现转码与解码


Posted in Javascript onFebruary 21, 2020

这篇文章主要介绍了如何通过JS实现转码与解码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

escape 和 unescape

escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。

采用unicode字符集对指定的字符串除0-255以外进行编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z。

escape()函数用于js对字符串进行编码。

encodeURI 和 decodeURI

把URI字符串采用UTF-8编码格式转化成escape各式的字符串。

encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURI()用于整个url编码

encodeURIComponent 和 decodeURIComponent

与encodeURI()的区别是,它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码。

因此,"; / ? : @ & = + $ , #",这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码。至于具体的编码方法,两者是一样。把URI字符串采用UTF-8编码格式转化成escape格式的字符串。

encodeURIComponent() 用于参数的传递,参数包含特殊字符可能会造成间断。

总结

escape编码字符串

简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读。

编码之后的效果是%XX或者%uXXXX这种形式。

其中 ASCII字母 数字 @*/+ 等字符不会被编码,其余的都会。

最关键的是,当需要对URL编码时,忘记这个方法,这个方法是针对字符串使用的,不适用于URL。

URL编码encodeURI和encodeURIComponent

对URL编码是常见的事,所以这两个方法应该是实际中要特别注意的。它们都是编码URL,唯一区别就是编码的字符范围,其中

encodeURI方法不会对下列字符编码 ASCII字母 数字 ~!@#$&*()=:/,;?+'

encodeURIComponent方法不会对下列字符编码 ASCII字母 数字 ~!*()'

所以encodeURIComponent比encodeURI编码的范围更大。

实际例子来说,encodeURIComponent会把 http:// 编码成 http%3A%2F%2F 而encodeURI却不会。

如果只是编码字符串,不和URL有半毛钱关系,那么用escape。

如果你需要编码整个URL,然后需要使用这个URL,那么用encodeURI。
比如

encodeURI(http://www.cnblogs.com/some other thing);

编码结果:

http://www.cnblogs.com/some%20other%20thing

其中,空格被编码成了%20。但是如果用了encodeURIComponent,那么结果变为

http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2Fsome%20other%20thing

连 "/" 都被编码了,整个URL已经没法用了。

当需要编码URL中的参数的时候,那么encodeURIComponent是最好方法

var param = "http://www.cnblogs.com/"; //param为参数
param = encodeURIComponent(param);
var url = "http://www.cnblogs.com?next=" + param;
console.log(url) //http://www.cnblogs.com?next=http%3A%2F%2Fwww.cnblogs.com%2F

参数中的 "/" 可以编码,如果用encodeURI肯定要出问题,因为后面的/是需要编码的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用javascript实现页面打印的三种方法
Mar 05 Javascript
JQuery 小练习(实例代码)
Aug 07 Javascript
HTML5实现留言和回复页面样式
Jul 22 Javascript
JavaScript实现点击单元格改变背景色的方法
Feb 12 Javascript
js HTML5多媒体影音播放
Oct 17 Javascript
Node.js 回调函数实例详解
Jul 06 Javascript
VUE实现一个分页组件的示例
Sep 13 Javascript
基于Bootstrap表单验证功能
Nov 17 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
Sep 26 Javascript
解决layui表格内文本超出隐藏的问题
Sep 12 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
Nov 04 Javascript
详解Vue的mixin策略
Nov 19 Vue.js
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
Feb 21 #Javascript
微信小程序使用 vant Dialog组件的正确方式
Feb 21 #Javascript
JS实现判断移动端PC端功能
Feb 21 #Javascript
JS获取表格视图所选行号的ids过程解析
Feb 21 #Javascript
微信小程序vant弹窗组件的实现方式
Feb 21 #Javascript
纯js实现无缝滚动功能代码实例
Feb 21 #Javascript
vue中实现动态生成二维码的方法
Feb 21 #Javascript
You might like
计算2000年01月01日起到指定日的天数
2006/10/09 PHP
php intval的测试代码发现问题
2008/07/27 PHP
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
php邮件发送,php发送邮件的类
2011/03/24 PHP
php fsockopen伪造post与get方法的详解
2013/06/14 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
python中input()与raw_input()的区别分析
2016/02/27 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
简单谈谈Python中的反转字符串问题
2016/10/24 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
Python输出带颜色的字符串实例
2017/10/10 Python
matplotlib绘制动画代码示例
2018/01/02 Python
python2.7无法使用pip的解决方法(安装easy_install)
2018/04/03 Python
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
pycharm 中mark directory as exclude的用法详解
2020/02/14 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
python基于openpyxl生成excel文件
2020/12/23 Python
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
YII2 全局异常处理深入讲解
2021/03/24 PHP
毕业生应聘幼儿园的自荐信
2013/11/20 职场文书
经典毕业生求职信
2014/07/12 职场文书
寻找最美家庭活动方案
2014/08/20 职场文书
教师年终个人总结
2015/02/11 职场文书
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle