¿Por qué Javascript `atob()` y `btoa()` se llamaron así?

Resuelto Константин Ван asked hace 9 años • 5 respuestas

En Javascript, window.atob()el método decodifica una cadena base64 y window.btoa()el método codifica una stringen 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.

Aceptado

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).
William Hilton avatar May 21 '2018 17:05 William Hilton

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

shershen avatar Nov 22 '2015 11:11 shershen

Para resumir las respuestas ya dadas:

  • atobrepresentaASCII to binary
    • p.ej:atob("ZXhhbXBsZSELCg==") == "example!^K"
  • btoarepresentabinary to ASCII
    • p.ej:btoa("\x01\x02\xfe\xff") == "AQL+/w=="

Por qué A SCII y b inary:

  • ASCII(el a) es el resultado de base64la 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(el b) es cualquier flujo de 0 y 1 (en javascript debe representarse con un tipo de cadena).

(*) en base64estos 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 bsignificaba " cadena codificada en base64" y " cualquier cadena " : D.a

derenio avatar May 16 '2017 15:05 derenio