WindowOrWorkerGlobalScope接口方法:btoa()
btoa()方法
WindowOrWorkerGlobalScope 接口的 btoa() 方法从一个 String 对象中创建一个 base-64 编码的 ASCII 字符串,其中字符串中的每个字符都被视为一个二进制数据字节。
注意:由于此函数将每个字符视为二进制数据的一个字节,而不管实际组成字符的字节数是多少,如果任何字符的代码点超出范围 0x00 至 0xFF ,则会引发 InvalidCharacterError 异常。有关示例,请参阅本节的“Unicode 字符串”部分,演示如何编码字符数超出 0x00 至 0xFF 范围的字符串。
btoa()方法语法
var encodedData = scope.btoa(stringToEncode);
btoa()方法参数
stringToEncode
- 一个字符串,其字符分别代表要编码为ASCII的二进制数据的单个字节。
btoa()方法返回值
btoa() 方法返回一个包含 stringToEncode 的 Base64 表示形式的字符串。
btoa()方法示例
以下是一个 btoa() 方法的使用示例:
var encodedData = window.btoa('Hello, world'); // encode a string
var decodedData = window.atob(encodedData); // decode the string
btoa()方法笔记
您可以使用此方法对可能会导致通信问题的数据进行编码,将其传输,然后再使用该 atob() 方法对数据进行解码。例如,您可以对控制字符(如 ASCII 值0到 31)进行编码。
btoa() 方法对于用 JavaScript 实现的 XPCOM 组件也是可用的,尽管 Window 不是组件中的全局对象。
Unicode字符串
在大多数浏览器中,调用 btoa() Unicode 字符串将导致 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 | 自最新快照(Recommendation)以来没有变化。 |
HTML 5.1 该规范中'WindowBase64.btoa()'的定义。 | Recommendation | HTML Living Standard 快照,没有改变。 |
HTML5 该规范中'WindowBase64.btoa()'的定义。 | Recommendation | HTML Living Standard 快照。创建WindowBase64 (属性之前的目标)。 |
浏览器兼容性
我们正在将兼容性数据转换为机器可读的JSON格式。此兼容性表仍使用旧格式,因为我们尚未转换其包含的数据。 了解如何提供帮助!
- 电脑端
特征 | Chrome | Edge | Firefox(Gecko) | Internet Explorer | Opera | Safari(WebKit) |
---|---|---|---|---|---|---|
基本支持 | 支持 | 支持 | 支持:1.0(1.7或更早版本)[1] 、52[2] | 支持:10 | 支持 | 支持 |
- 移动端
Feature | Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
基本支持 | 支持 | 支持 | 支持:1.0、52 | 不支持 | ? | 支持 |
注释:
[1] btoa() 也可用于 JavaScript 中实现的 XPCOM 组件,即使 window 不是组件中的全局对象。
[2] btoa() 现在在 WindowOrWorkerGlobalScope mixin 上定义。