如何通过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 相关文章推荐
jQuery Dialog 弹出层对话框插件
Aug 09 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
Mar 12 Javascript
jQuery替换字符串(实例代码)
Nov 13 Javascript
JS创建自定义表格具体实现
Feb 11 Javascript
AngularJS仿苹果滑屏删除控件
Jan 18 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
Dec 18 Javascript
js轮播图无缝滚动效果
Jun 17 Javascript
原生javascript实现的全屏滚动功能示例
Sep 19 Javascript
解决js ajax同步请求造成浏览器假死的问题
Jan 18 Javascript
解决vue 更改计算属性后select选中值不更改的问题
Mar 02 Javascript
解决layui调用自定义方法提示未定义的问题
Sep 14 Javascript
vue实现评论列表功能
Oct 25 Javascript
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
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
完美解决PHP中的Cannot modify header information 问题
2013/08/12 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
自己的js工具 Cookie 封装
2009/08/21 Javascript
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
Nodejs中获取当前函数被调用的行数及文件名详解
2018/12/12 NodeJs
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
Python通过解析网页实现看报程序的方法
2014/08/04 Python
Python实现在线程里运行scrapy的方法
2015/04/07 Python
对python中return和print的一些理解
2017/08/18 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
使用python生成杨辉三角形的示例代码
2018/08/29 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
2019/08/18 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
pytorch1.0中torch.nn.Conv2d用法详解
2020/01/10 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
如何利用python进行时间序列分析
2020/08/04 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
linux面试题参考答案(9)
2015/01/07 面试题
自学考试自我鉴定范文
2013/09/26 职场文书
学校安全教育制度
2014/01/31 职场文书
《雨霖铃》教学反思
2014/02/22 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
八月迷情观后感
2015/06/11 职场文书
初中英语教学随笔
2015/08/15 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
vue使用节流函数的踩坑实例指南
2021/05/20 Vue.js
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL