btoa和atob是window对象的两个函数,其中:
btoa:binary to ascii,用于将binary的数据用ascii码表示,即Base64的编码过程。
atob:ascii to binary,用于将ascii码解析成binary数据,即Base64的解码过程。
var str="hello world" var demo=btoa(str) console.log(demo)//aGVsbG8gd29ybGQ= var demo="aGVsbG8gd29ybGQ=" var str=atob(demo) console.log(str)//hello world
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感觉是多此一举。