window.atob()与window.btoa()方法实现编码与解码
转载于https://www.cnblogs.com/moqiutao/p/6280099.html
文章目录
- window.atob() 与window.btoa()
- Unicode 字符串
- decodeURIComponent() 与encodeURIComponent()
- escape() 与unescape() 方法
一.window.atob() 与window.btoa()
WindowBase64.atob()
函数用来解码一个已经被base-64编码过的数据。你可以使用
window.btoa()
方法来编码一个可能在传输过程中出现问题的数据,并且在接受数据之后,使用 window.atob() 方法来将数据解码。例如:你可以把ASCII里面数值0到31的控制字符进行编码,传输和解码。
window.btoa():将ascii字符串或二进制数据转换成一个base64编码过的字符串,该方法不能直接作用于Unicode字符串.
语法:
var decodedData = window.atob(encodedData);
例子:
var encodedData = window.btoa("Hello, world"); // 编码
var decodedData = window.atob(encodedData); // 解码
其兼容性是主流浏览器,IE10及以上。
二.Unicode 字符串
在各浏览器中,使用 window.btoa
对Unicode字符串进行编码都会触发一个字符越界的异常.
先把Unicode字符串转换为UTF-8编码,可以解决这个问题, 代码来自Johan Sundstr?m:
function utf8_to_b64( str ) {return window.btoa(unescape(encodeURIComponent( str )));
}function b64_to_utf8( str ) {return decodeURIComponent(escape(window.atob( str )));
}// Usage:
utf8_to_b64('? à la mode'); // "4pyTIMOgIGxhIG1vZGU="
b64_to_utf8('4pyTIMOgIGxhIG1vZGU='); // "? à la mode"
//译者注:在js引擎内部,encodeURIComponent(str)相当于escape(unicodeToUTF8(str))
//所以可以推导出unicodeToUTF8(str)等同于unescape(encodeURIComponent(str))
三.decodeURIComponent() 与encodeURIComponent()
这里用到了encodeURIComponent()与
decodeURIComponent()方法,下面简单介绍下:
decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。
下面给个例子:
<script type="text/javascript">var test1="http://www.w3school.com.cn/My first/"document.write(encodeURIComponent(test1)+ "<br />")
document.write(decodeURIComponent(test1))</script>
输出的结果:
http%3A%2F%2Fwww.w3school.com.cn%2FMy%20first%2F
http://www.w3school.com.cn/My first/
下个例子, encodeURIComponent() 对 URI 进行编码:
<script type="text/javascript">document.write(encodeURIComponent("http://www.w3school.com.cn"))
document.write("<br />")
document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/"))
document.write("<br />")
document.write(encodeURIComponent(",/?:@&=+$#"))</script>
输出结果:
http%3A%2F%2Fwww.w3school.com.cn
http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F
%2C%2F%3F%3A%40%26%3D%2B%24%23
关于encodeURIComponent()与
decodeURIComponent()的参考地址:
JavaScript decodeURIComponent() 函数与JavaScript encodeURIComponent() 函数
四.escape() 与unescape() 方法
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
语法:escape(string)
返回值:已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。
说明:该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。
参考地址:https://developer.mozilla.org/zh-CN/docs/Web/API/WindowBase64/btoa
https://developer.mozilla.org/zh-CN/docs/Web/API/WindowBase64/atob
http://www.w3school.com.cn/jsref/jsref_escape.asp
window.atob()与window.btoa()方法实现编码与解码相关推荐
- Linux上的js解码,使用JavaScript实现Base64编码与解码
我们知道,浏览器的window对象提供有window.atob()和window.btoa()方法可以对字符串进行Base64编码和解码. console.log(window.btoa(window ...
- Java编码与解码 - Charset
在计算机中所有的文件.媒体.信息在底层都是以二进制方式进行存储的. 要想将计算机底层存储的二进制信息转换成可以直接使用的文件.媒体和信息,就要进行转换,在这个过程中涉及两个概念:编码(Encode)和 ...
- java对URL进行编码和解码
代码 引入 import java.net.URLEncoder; import java.net.URLDecoder; 编码 URLEncoder.encode( URL, "UTF-8 ...
- 前端html的base64使用方法window.btoa()和window.atob()
前端用base64加密和解密的使用方法,只需要两个函数就可以了.一个是加密:window.btoa(),一个是解密:window.atob(),看例子: <html><head> ...
- Window atob()与btoa()方法
一.Window atob()与btoa()方法 1.1 atob() atob() 方法用于解码使用 base-64 编码的字符串. 语法 window.atob(encodedStr) encod ...
- Js对字符串进行base64编码和解码,中文报错:Failed to execute ‘btoa‘ on ‘Window‘: The string to be encoded contains cha
我最早使用的是atob和btoa这两个函数,但是会出现报错. 直接使用封装好的方法: /*** 编码base64*/ function Encode64(str) {return btoa(encod ...
- base64和普通字符串互转---window.btoa window.atob;图片的base64格式
目录 一.作用 二.使用方法 一.作用 将非ASCLL码数据转换为ASCLL码数据,便于网络传输(某些系统仅支持ASCLL编码): 二.使用方法 1)测试代码: //window.btoa(" ...
- js基础 -- window.btoa和window.atob使用详解.md
欢迎访问我的个人博客:http://www.xiaolongwu.cn 定义 atob() 解码一个Base64字符串. btoa() 从一个字符串或者二进制数据编码一个Base64字符串. 用法 只 ...
- Window atob() 方法
atob() 方法用于解码使用 base-64 编码的字符串. 语法: window.atob(encodedStr) 参考:https://www.runoob.com/jsref/met-win- ...
最新文章
- 使用按钮控制HTML5背景音乐开关
- sharepoint2013- Office web app server2013详细的安装和部署
- python处理流程-python流程处理
- st04 查看数据库日志
- 解读GAN及其 2016 年度进展
- Linux学习之Vim编辑器
- Python统计列表中的重复项出现的次数的方法
- java安全级别过高_Java应该是更高级别还是更低级别?
- H.264视频编码在VC .Net中的实现(H264全文)
- 2021-2025年中国点状插头装置行业市场供需与战略研究报告
- mysql 执行计划不对_MySQL执行计划显示与执行过程不符合
- 学C++的室友手握这个项目,面试稳了
- Halcon图像预处理与形态学(图像的几何变换)
- 远程计算机怎么安装软件安装,不需要U盘,手机电脑给电视远程安装软件的两种方法...
- word2007导出pdf带书签
- jQuery动画高级用法(上)——详解animation中的.queue()函数 http://www.cnblogs.com/hh54188/archive/2011/04/09/1996469.
- 106短信通道等6种常见短信通道介绍,你了解多少呢
- 如何快速融入一个研发团队?
- c语言判定条件 i什么意思,c语言 if(!x)中条件!x是什么意思
- BZOJ4200 洛谷2304 UOJ132:[NOI2015]小园丁与老司机——题解