WorkerGlobalScope: btoa() 方法

注意:此功能仅在 Web 工作线程 中可用。

btoa() 方法是 WorkerGlobalScope 接口的一部分,它将一个二进制字符串(即每个字符都被视为一个二进制数据字节的字符串)创建为一个 Base64 编码的 ASCII 字符串。

您可以使用此方法对可能导致通信问题的數據进行编码,传输它,然后使用 WorkerGlobalScope.atob() 方法再次解码数据。例如,您可以对诸如 ASCII 值 0 到 31 的控制字符进行编码。

语法

js
btoa(stringToEncode)

参数

stringToEncode

要编码的二进制字符串

返回值

包含 stringToEncode 的 Base64 表示形式的 ASCII 字符串。

异常

InvalidCharacterError DOMException

该字符串包含一个不适合单个字节的字符。有关更多详细信息,请参见下面的“Unicode 字符串”。

示例

js
const encodedData = self.btoa("Hello, world"); // encode a string
const decodedData = self.atob(encodedData); // decode the string

Unicode 字符串

Base64 根据设计,期望以二进制数据作为其输入。就 JavaScript 字符串而言,这意味着每个字符的代码点仅占用一个字节的字符串。因此,如果您将包含占用超过一个字节的字符的字符串传递给 btoa(),您将收到错误,因为这不被视为二进制数据。

js
const ok = "a";
console.log(ok.codePointAt(0).toString(16)); //   61: occupies < 1 byte

const notOK = "✓";
console.log(notOK.codePointAt(0).toString(16)); // 2713: occupies > 1 byte

console.log(self.btoa(ok)); // YQ==
console.log(self.btoa(notOK)); // error

有关在处理任意 Unicode 文本时如何解决此限制,请参阅 Base64 词汇表条目中的“Unicode 问题”

规范

规范
HTML 标准
# dom-btoa-dev

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅