前言
btoa
和 atob
是window对象的两个函数,用来编码解码Base64
window对象函数window.btoa和window.atob简介
1.btoa
:是binary to ascii
,用于将binary
的数据用ascii
码表示,即Base64的编码过程。
2.atob:是ascii to binary
,用于将ascii
码解析成binary
数据,即Base64的解码过程。
btoa 和 atob 使用方法:
1.window.atob(string)/atob(string)
:解码,用来解码一个已经被base-64编码过的字符串。(参数string: 必需是一个通过 btoa() 方法编码的字符串)。
2.window.btoa(string)/btoa(string)
:编码,用来创建一个 base-64编码的字符串。
1.btoa
用于将binary
的数据用ascii
码表示。经常使用于编码字符串。
示例代码:
var str = "This is a string";
var encoded_str = btoa(str);
console.log(encoded_str); // Outputs: "VGhpcyBpcyBhIHN0cmluZw=="
注意:不能编码Unicode字符
2.atob
ascii to binary
,用于将ascii
码解析成binary
数据。用于解码Base64编码的字符串。
示例代码:
var encoded_str = "VGhpcyBpcyBhIHN0cmluZw==";
var str= atob(encoded_str);
console.log(str); // Outputs: "This is a string"
如何让btoa支持Unicode字符编码
编码时,先用encodeURIComponent
对字符串进行编码,再用btoa
进行Base64编码。
解码时,先用atob
对Base64编码的串进行解码,再用decodeURIComponent
对字符串进行解码。
示例代码:
var str = "hello,中国";
var encoded_str = btoa(encodeURIComponent(str));
var decoded_str = decodeURIComponent(atob(encoded_str));
console.log(encoded_str); // Outputs: "aGVsbG8lMkMlRTQlQjglQUQlRTUlOUIlQkQ="
console.log(decoded_str); // Outputs: "hello,中国"
注意:
1.编码的过程:Unicode
字符 ——-> 先encodeURI
——-> 再btoa
编码
2.解码的过程:先atob
解码 ——-> 再decodeURI
——-> Unicode
字符
示例代码:
//编码,输出:"MTIzNDU2"
window.btoa("123456");
//解码,输出:123456
window.atob("MTIzNDU2");
//编码,输出:"5Lit5paH"
btoa(unescape(encodeURIComponent("中文")))
//解码,输出:"中文"
decodeURIComponent(escape(atob("5Lit5paH")))
IE9不支持atob、btoa
1.在使用atob和btoa这两个函数时需要注意的是,IE9是不支持的(虽然现在基本都是面向Chrome浏览器编程)。
2.我们使用第三方Base64工具:webtoolkit.base64
是一个第三方实现的 Base64 编码工具,完美的支持 unicode 编码的字符串。
done!
出处:www.l1mn.com
原文标题:js学习window对象函数window.btoa和window.atob
原文地址:https://www.l1mn.com/p/9fjxn.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
Copyright © L1MN.COM 联系方式:l1mnfw@163.com