如何通过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游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
Jan 23 Javascript
15条JavaScript最佳实践小结
Aug 09 Javascript
jQuery实现视频作为全屏幕背景
Dec 18 Javascript
JavaScript实现级联菜单的方法
Jun 29 Javascript
JQuery菜单效果的两个实例讲解(3)
Sep 17 Javascript
jquery siblings获取同辈元素用法实例分析
Jul 25 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
Aug 05 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
Nov 07 Javascript
javascript中json对象json数组json字符串互转及取值方法
Apr 19 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
Dec 08 Javascript
vue bus全局事件中心简单Demo详解
Feb 26 Javascript
JavaScript canvas绘制渐变颜色的矩形
Feb 18 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 采集心得技巧
2009/05/15 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
JavaScript 布尔操作符解析  && || !
2012/08/10 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
2018/05/17 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
js动态添加带圆圈序号列表的实例代码
2021/02/18 Javascript
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
python实现给数组按片赋值的方法
2015/07/28 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
Django基础三之视图函数的使用方法
2019/07/18 Python
python读文件的步骤
2019/10/08 Python
pymysql 插入数据 转义处理方式
2020/03/02 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
matplotlib自定义鼠标光标坐标格式的实现
2021/01/08 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
中国文明网签名寄语
2014/01/18 职场文书
会计与出纳自荐书范文
2014/03/16 职场文书
销售员岗位职责
2014/06/09 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
养成教育主题班会
2015/08/13 职场文书
2016元旦晚会主持人开场白和结束语
2015/12/03 职场文书
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis