如何通过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 相关文章推荐
让textarea控件的滚动条怎是位与最下方
Apr 20 Javascript
JS 对象介绍
Jan 20 Javascript
js禁止页面刷新禁止用F5键刷新禁止右键的示例代码
Sep 23 Javascript
js弹出层永远居中实现思路及代码
Nov 29 Javascript
js 对小数加法精度处理示例说明
Dec 27 Javascript
控制input输入框中提示信息的显示和隐藏的方法
Feb 12 Javascript
js实现不提交表单获取单选按钮值的方法
Aug 21 Javascript
深入理解Angular中的依赖注入
Jun 26 Javascript
react-router browserHistory刷新页面404问题解决方法
Dec 29 Javascript
Vue验证码60秒倒计时功能简单实例代码
Jun 22 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
Jan 18 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
Apr 28 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
php email邮箱正则
2008/10/08 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
网页常用特效代码整理
2006/06/23 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
vue form check 表单验证的实现代码
2018/12/09 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
Python hashlib模块加密过程解析
2019/11/05 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
基于Pytorch SSD模型分析
2020/02/18 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
门诊挂号室室长岗位职责
2013/11/27 职场文书
20岁生日感言
2014/01/13 职场文书
西安交大自主招生自荐信
2014/01/27 职场文书
幼儿园标语大全
2014/06/19 职场文书
防火标语大全
2014/10/06 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
2015七夕情人节宣传语
2015/07/14 职场文书
小学班级标语口号大全
2015/12/26 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书