window方法:btoa()
btoa()方法
该WindowOrWorkerGlobalScope.btoa()方法从String对象创建一个base-64编码的ASCII字符串,其中字符串中的每个字符都被视为二进制数据的字节。
注意:由于此函数将每个字符视为二进制数据的字节,无论实际构成字符的字节数如何,如果任何字符的代码点超出范围0x00至0xFF ,则抛出InvalidCharacterError异常。
btoa()方法语法
var encodedData = scope.btoa(stringToEncode);
参数
stringToEncode
- 一个字符串,其字符分别表示要编码为ASCII的二进制数据的单个字节。
返回值
一个包含 stringToEncode 的 Base64 表示形式的字符串。
btoa()方法示例
var encodedData = window.btoa('Hello, world'); // encode a string
var decodedData = window.atob(encodedData); // decode the string
笔记
您可以使用此方法对可能导致通信问题的数据进行编码,然后将其传输,然后再使用该atob()方法对数据进行解码。例如,您可以编码控制字符(例如,ASCII值0到31)。
btoa()也可用于在JavaScript中实现的XPCOM组件,即使Window不是组件中的全局对象。
Unicode字符串
在大多数浏览器中,在Unicode字符串上调用btoa()将导致InvalidCharacterError异常。
一种选择是转义任何扩展字符,以便实际编码的字符串是原始字符的ASCII表示形式。考虑这个例子,JohanSundström指出:
// ucs-2 string to base64 encoded ascii
function utoa(str) {
return window.btoa(unescape(encodeURIComponent(str)));
}
// base64 encoded ascii to ucs-2 string
function atou(str) {
return decodeURIComponent(escape(window.atob(str)));
}
// Usage:
utoa('✓ à la mode'); // 4pyTIMOgIGxhIG1vZGU=
atou('4pyTIMOgIGxhIG1vZGU='); // "✓ à la mode"
utoa('I \u2661 Unicode!'); // SSDimaEgVW5pY29kZSE=
atou('SSDimaEgVW5pY29kZSE='); // "I ♡ Unicode!"
规范
规范 | 状态 | 注释 |
---|---|---|
HTML Living Standard
该规范中“WindowOrWorkerGlobalScope.btoa()”的定义。
|
Living Standard
|
方法移动到最新规范中的WindowOrWorkerGlobalScope mixin。
|
HTML Living Standard
该规范中“WindowBase64.btoa()”的定义。
|
Living Standard
|
自最新快照以来没有任何变化,HTML 5.1。
|
HTML 5.1
该规范中“WindowBase64.btoa()”的定义。
|
Recommendation
|
HTML Living Standard快照。没有改变。 |
HTML5
该规范中“WindowBase64.btoa()”的定义。
|
Recommendation
|
HTML Living Standard快照。创建WindowBase64 (在其之前的目标上的属性)。
|
浏览器兼容性
电脑端 | 移动端 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome
|
Edge
|
Firefox
|
Internet Explorer
|
Opera
|
Safari
|
Android webview | Chrome for Android
|
Edge Mobile | Firefox for Android
|
Opera for Android
|
iOS Safari | |
基本支持 | 支持 | 支持 | 支持:1 | 支持:10 | 支持 | 支持 | 支持 | 支持 | ? | 支持:4 | ? | 支持 |