Javascript原生base64编码解码函数btoa(atob)用法
window.btoa
和window.atob
分别编码与解码base64
,它们在现代浏览器中受到广泛的支持。
兼容性
编码base64函数btoa
提示:函数名中的b表示binary即原始的待编码数据,a表示ASCII,即编码后的结果(base64编码后,就只是纯的ASCII字符),btoa就是将binary的数据转为ASCII字符(串)。
用法:
1 | console.log(btoa('Hello world!'));//SGVsbG8gd29ybGQh |
解码base64函数atob
可以将base64字符串还原成二进制格式(通常是原始的字符串,JavaScript中字符串就是一种序列化的二进制数据)
用法:
1 | console.log(atob('SGVsbG8gd29ybGQh'));//Hello world! |
原始数据含非ASCII字符(例如中文)时的处理
执行下面的代码:
1 | btoa('我是中文'); |
会有如下的报错信息:
1 | Uncaught DOMException: Failed to execute ‘btoa’ on ‘Window’: The string to be encoded contains characters outside of the Latin1 range.(…) |
说明只能对ASCII字符进行编码,对于中文来说,可以通过下面的方式进行编码:
1 | console.log(btoa(unescape(encodeURIComponent('我是中文'))));//5oiR5piv5Lit5paH |
解码方法:
1 | console.log(decodeURIComponent(escape(atob('5oiR5piv5Lit5paH'))));//我是中文 |
作者:lyz810
原文:https://blog.lyz810.com/article/2016/07/javascript-base64-encode-and-decode/