Window: btoa() 方法

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

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

语法

js
btoa(stringToEncode)

参数

stringToEncode

要编码的二进制字符串

返回值

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

异常

InvalidCharacterError DOMException

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

示例

js
const encodedData = window.btoa("Hello, world"); // encode a string
const decodedData = window.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(window.btoa(ok)); // YQ==
console.log(window.btoa(notOK)); // error

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

规范

规范
HTML 标准
# dom-btoa-dev

浏览器兼容性

BCD 表仅在启用了 JavaScript 的浏览器中加载。

另请参阅