Почему Javascript `atob()` и `btoa()` назвали так?

В Javascript, window.atob() метод декодирует строку base64 и window.btoa() метод кодирует строку как base64.

Тогда почему они не назывались base64Decode() и base64Encode()? atob() и btoa() не имеют смысла, потому что они не являются семантическими.

Я хочу знать причину.

Ответы

Ответ 1

Методы atob() и btoa() позволяют авторам преобразовывать контент в кодировку base64 и из нее.

В этих API, для мнемонических целей, "b" можно рассматривать как обозначить "двоичный" и "a" для "ASCII". На практике, однако, для в первую очередь исторические причины, и ввод и вывод этих функции - это строки Unicode.

От: http://www.w3.org/TR/html/webappapis.html#atob

Ответ 2

Подведем итог уже предоставленным ответам:

  • atob означает ASCII to binary
    • Например: atob("ZXhhbXBsZSELCg==") == "example!^K"
  • btoa означает binary to ASCII
    • Например: btoa("\x01\x02\xfe\xff") == "AQL+/w=="

Почему A SCII и b inary:

  • ASCII (a) является произведением кодировки base64. Безопасный текст, состоящий только из подмножества символов ascii (*), который может быть правильно представлен и перенесен (например, тело электронной почты),
  • binary (b) - это любой поток 0s и 1s (в javascript он должен быть представлен строковым типом).

(*) в base64 они ограничены: A-Z, A-Z, 0-9, +, / и = (заполнение, только в конце) https://en.wikipedia.org/wiki/Base64

P.S. Должен признаться, я сам был смущен наименованием и думал, что имена были заменены. Я думал, что b означает " b строка с кодировкой ase64" и a для " a ny строка": D.

Ответ 3

Я не могу найти источник на данный момент, но общеизвестно, что в этом случае b означает "двоичный", а a для "ASCII".

Поэтому функции на самом деле называются:

ASCII в двоичный код для atob() и Двоичный для ASCII для btoa().

Обратите внимание, что это реализация браузера, и она осталась для целей сохранения/обратной совместимости. Например, в Node.js они не существуют.