如何通过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 相关文章推荐
让table变成exls的示例代码
Mar 24 Javascript
ExtJS4如何给同一个formpanel不同的url
May 02 Javascript
js阻止事件追加的具体实现
Oct 15 Javascript
javascript面向对象之定义成员方法实例分析
Jan 13 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
Mar 02 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
Jan 05 Javascript
javascript类型系统 Window对象学习笔记
Jan 07 Javascript
JS中frameset框架弹出层实例代码
Apr 01 Javascript
JavaScript调试之console.log调试的一个小技巧分享
Aug 07 Javascript
ES6中let 和 const 的新特性
Sep 03 Javascript
微信小程序实现传递多个参数与事件处理
Aug 12 Javascript
HTML+VUE分页实现炫酷物联网大屏功能
May 27 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
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
测试php函数的方法
2013/11/13 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
css图片自适应大小
2007/11/28 Javascript
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
JQuery实现table行折叠效果以JSON做数据源
2014/05/26 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
jquery常用函数与方法汇总
2015/09/01 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
js如何找出字符串中的最长回文串
2018/06/04 Javascript
微信小程序入门之广告条实现方法示例
2018/12/05 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
2019/04/15 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
[48:21]林俊杰圣堂刺客超神杀戮秀
2014/10/29 DOTA
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
Python操作csv文件实例详解
2017/07/31 Python
Python贪心算法实例小结
2018/04/22 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
Python网页解析器使用实例详解
2020/05/30 Python
python源文件的字符编码知识点详解
2021/03/04 Python
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
家长给老师的感谢信
2015/01/20 职场文书
店长岗位职责
2015/02/11 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers