为什么JavaScript的`atob()`和`btoa()`这样的命名?

在Javascript中, window.atob()方法解码base64string, window.btoa()方法将string编码为base64。

那为什么他们不像base64Decode()base64Encode()atob()btoa()没有意义,因为它们不是语义的。

我想知道原因。

atob()btoa()方法允许作者从base64编码转换内容。

在这些API中,为了助记符的目的,可以认为“b”代表“二进制”,“a”代表“ASCII”。 但实际上,由于历史原因,这些函数的input和输出都是Unicodestring。

来自: http : //www.w3.org/TR/html/webappapis.html#atob

总结已经给出的答案:

  • atob代表ASCII to binary
    • 例如: atob("ZXhhbXBsZSELCg==") == "example!^K"
  • btoa代表binary to ASCII
    • 例如: btoa("\x01\x02\xfe\xff") == "AQL+/w=="

为什么SCII和Baryary:

  • ASCIIa )是base64编码的产物。 一个安全的文本,只能由正确表示和运输的ascii字符(*)的一个子集(如电子邮件的正文)组成,
  • binaryb )是01的任何stream(在JavaScript中,它必须用stringtypes表示)。

(*)在base64这些是限于: AZaz0-9+/= (填充,只在最后) https://en.wikipedia.org/wiki/Base64

PS我必须承认,我自己最初是由命名困惑,并认为名称交换。 我以为b代表 b ase64编码的string”a a nystring” :D。

目前我无法find源,但在这种情况下,b代表“二进制”,a代表“ASCII”,这是众所周知的。

因此,这些函数实际上被命名为:

用于atob() ASCII到二进制,用于btoa()二进制到ASCII。

请注意,这是浏览器的实现,只是为了传统/向后兼容的目的。 例如在Node.js中,这些不存在。