Почему 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 они не существуют.