1.背景

btoa和atob是window对象的两个函数,其中:

btoa:binary to ascii,用于将binary的数据用ascii码表示,即Base64的编码过程。

atob:ascii to binary,用于将ascii码解析成binary数据,即Base64的解码过程。

2.案例

var str="hello world"
var demo=btoa(str)
console.log(demo)//aGVsbG8gd29ybGQ=
var demo="aGVsbG8gd29ybGQ="
var str=atob(demo)
console.log(str)//hello world

3.注意

btoa不能编辑Unicode字符,不支持中文。

编码时,先用encodeURIComponent对字符串进行编码,再用btoa进行Base64编码。

解码时,先用atob对Base64编码的串进行解码,再用decodeURIComponent对字符串进行解码,即:

编码的过程:Unicode字符->先encodeURI->再btoa编码

解码的过程:先atob解码->再decodeURI->Unicode字符

var str = "好好学习"
var demo = btoa(encodeURIComponent(str))
console.log(demo)//JUU1JUE1JUJEJUU1JUE1JUJEJUU1JUFEJUE2JUU0JUI5JUEw

不过虽然到达了曲线救国的目的,但是由于encodeURIComponent和decodeURIComponent已经达到了转义控制字符的目的,使用atob和btoa感觉是多此一举。