¿Por qué Javascript `atob()` y `btoa()` se llamaron así?
En Javascript, window.atob()
el método decodifica una cadena base64 y window.btoa()
el método codifica una string
en base64 .
Entonces, ¿por qué no fueron nombrados como base64Decode()
y base64Encode()
?
atob()
ybtoa()
no tienen sentido porque no son semánticos en absoluto.
Quiero saber el motivo.
Le pregunté a Brendan Eich (el creador de JavaScript) si había elegido esos nombres en Twitter y respondió:
Nombres antiguos de Unix, es difícil encontrar páginas de manual, pero consulte https://www.unix.com/man-page/minix/1/btoa/… . Los nombres pasaron de Unix al código base de Netscape. Los reflejé en JS a toda prisa en 1995 (después de los diez días de mayo, pero pronto).
En caso de que el enlace de Minix se rompa, aquí está el contenido de la página de manual:
BTOA(1) BTOA(1)
NAME
btoa - binary to ascii conversion
SYNOPSIS
btoa [-adhor] [infile] [outfile]
OPTIONS
-a Decode, rather than encode, the file
-d Extracts repair file from diagnosis file
-h Help menu is displayed giving the options
-o The obsolete algorithm is used for backward compatibility
-r Repair a damaged file
EXAMPLES
btoa <a.out >a.btoa # Convert a.out to ASCII
btoa -a <a.btoa >a.out
# Reverse the above
DESCRIPTION
Btoa is a filter that converts a binary file to ascii for transmission over a telephone
line. If two file names are provided, the first in used for input and the second for out-
put. If only one is provided, it is used as the input file. The program is a function-
ally similar alternative to uue/uud, but the encoding is completely different. Since both
of these are widely used, both have been provided with MINIX. The file is expanded about
25 percent in the process.
SEE ALSO
uue(1), uud(1).
Los métodos atob()
y btoa()
permiten a los autores transformar contenido hacia y desde la codificación base64.
En estas API, a efectos mnemotécnicos, se puede considerar que la "b" significa "binario" y la "a" significa "ASCII". Sin embargo, en la práctica, por razones principalmente históricas, tanto la entrada como la salida de estas funciones son cadenas Unicode.
De: http://www.w3.org/TR/html/webappapis.html#atob
Para resumir las respuestas ya dadas:
atob
representaASCII to binary
- p.ej:
atob("ZXhhbXBsZSELCg==") == "example!^K"
- p.ej:
btoa
representabinary to ASCII
- p.ej:
btoa("\x01\x02\xfe\xff") == "AQL+/w=="
- p.ej:
Por qué A SCII y b inary:
ASCII
(ela
) es el resultado debase64
la codificación. Un texto seguro compuesto únicamente por un subconjunto de caracteres ascii (*) que se pueden representar y transportar correctamente (por ejemplo, el cuerpo de un correo electrónico).binary
(elb
) es cualquier flujo de 0 y 1 (en javascript debe representarse con un tipo de cadena).
(*) en base64
estos se limitan a: A-Z
, a-z
, 0-9
, y +
( relleno, solo al final) https://en.wikipedia.org/wiki/Base64/
=
PD: Debo admitir que al principio yo mismo estaba confundido por el nombre y pensé que los nombres estaban intercambiados. Pensé que eso b
significaba " cadena codificada en base64" y " cualquier cadena " : D.a