如何通过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 简单高效判断数据类型 系列函数 By shawl.qiu
Mar 06 Javascript
JavaScript 语法集锦 脚本之家基础推荐
Nov 15 Javascript
js解决select下拉选不中问题
Oct 14 Javascript
Javascript实现div层渐隐效果的方法
May 30 Javascript
Javascript模仿淘宝信用评价实例(附源码)
Nov 26 Javascript
基于javascript实现右下角浮动广告效果
Jan 08 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
Jun 13 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
Mar 06 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
Nov 22 Javascript
如何给element添加一个抽屉组件的方法步骤
Jul 14 Javascript
Vue封装的组件全局注册并引用
Jul 24 Javascript
JS的时间格式化和时间戳转换函数示例详解
Jul 27 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
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
2013/10/17 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
2016/05/17 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
基于vue.js实现图片轮播效果
2016/12/01 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
JS如何实现手机端输入验证码效果
2020/05/13 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
12步教你理解Python装饰器
2016/02/25 Python
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
django中send_mail功能实现详解
2018/02/06 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
简单了解python协程的相关知识
2019/08/31 Python
django修改models重建数据库的操作
2020/03/31 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
大四自我鉴定范文
2013/10/06 职场文书
高三家长寄语
2014/04/03 职场文书
营销与策划专业求职信
2014/06/20 职场文书
博士生求职信
2014/07/06 职场文书
2014年政工师工作总结
2014/12/18 职场文书
音乐教师求职信范文
2015/03/20 职场文书
借条格式范本
2015/05/25 职场文书
百年校庆感言
2015/08/01 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL