WindowOrWorkerGlobalScope接口方法:btoa()

2018-03-23 10:55 更新

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
方法转移到最新规范中的WindowOrWorkerGlobalScopemixin。
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支持支持 
  • 移动端

FeatureAndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
基本支持支持支持支持:1.0、52不支持?支持

注释:

[1] btoa() 也可用于 JavaScript 中实现的 XPCOM 组件,即使 window 不是组件中的全局对象。

[2] btoa() 现在在 WindowOrWorkerGlobalScope mixin 上定义。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号