Saltar al contenido

¿Cómo puedes codificar un string a Base64 en JavaScript?

Recabamos en distintos sitios y así traerte la solución a tu problema, en caso de alguna inquietud déjanos la inquietud y contestaremos porque estamos para servirte.

Solución:

Puedes usar btoa() y atob() para convertir desde y hacia la codificación base64.

Parece haber cierta confusión en los comentarios con respecto a lo que aceptan / devuelven estas funciones, así que …

  • btoa() acepta un “string”Donde cada carácter representa un byte de 8 bits, si pasa un string contiene caracteres que no se pueden representar en 8 bits, probablemente se romperá. Esto no es un problema si en realidad estás tratando el string como un byte array, pero si está intentando hacer otra cosa, primero tendrá que codificarlo.

  • atob() devuelve un “string”Donde cada carácter representa un byte de 8 bits, es decir, su valor estará entre 0 y 0xff. Esto hace no significa que es ASCII; presumiblemente, si está utilizando esta función, espera trabajar con datos binarios y no con texto.

Ver también:

  • ¿Cómo cargo datos de imágenes binarias usando Javascript y XMLHttpRequest?

La mayoría de los comentarios aquí están desactualizados. Probablemente puedas usar ambos btoa() y atob(), a menos que sea compatible con navegadores realmente obsoletos.

Chequea aquí:

  • https://caniuse.com/?search=atob
  • https://caniuse.com/?search=btoa

De aquí:

/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/
var Base64 = 

// private property
_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

// public method for encoding
encode : function (input) 
    var output = "";
    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
    var i = 0;

    input = Base64._utf8_encode(input);

    while (i < input.length)  (chr3 >> 6);
        enc4 = chr3 & 63;

        if (isNaN(chr2)) 
            enc3 = enc4 = 64;
         else if (isNaN(chr3)) 
            enc4 = 64;
        

        output = output +
        this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
        this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

    

    return output;
,

// public method for decoding
decode : function (input) 
    var output = "";
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;

    input = input.replace(/[^A-Za-z0-9+/=]/g, "");

    while (i < input.length) 

        enc1 = this._keyStr.indexOf(input.charAt(i++));
        enc2 = this._keyStr.indexOf(input.charAt(i++));
        enc3 = this._keyStr.indexOf(input.charAt(i++));
        enc4 = this._keyStr.indexOf(input.charAt(i++));

        chr1 = (enc1 << 2) 

    output = Base64._utf8_decode(output);

    return output;

,

// private method for UTF-8 encoding
_utf8_encode : function (string) 
    string = string.replace(/rn/g,"n");
    var utftext = "";

    for (var n = 0; n < string.length; n++) 

        var c = string.charCodeAt(n);

        if (c < 128) 
            utftext += String.fromCharCode(c);
        
        else if((c > 127) && (c < 2048)) 
            utftext += String.fromCharCode((c >> 6) 
        else 
            utftext += String.fromCharCode((c >> 12) 

    

    return utftext;
,

// private method for UTF-8 decoding
_utf8_decode : function (utftext) 
    var string = "";
    var i = 0;
    var c = c1 = c2 = 0;

    while ( i < utftext.length ) 

        c = utftext.charCodeAt(i);

        if (c < 128) 
            string += String.fromCharCode(c);
            i++;
        
        else if((c > 191) && (c < 224)) 
            c2 = utftext.charCodeAt(i+1);
            string += String.fromCharCode(((c & 31) << 6) 
        else  ((c2 & 63) << 6) 

    

    return string;



Además, la búsqueda de "codificación javascript base64" genera muchas otras opciones, la anterior fue la primera.

Internet Explorer 10+

// Define the string
var string = 'Hello World!';

// Encode the String
var encodedString = btoa(string);
console.log(encodedString); // Outputs: "SGVsbG8gV29ybGQh"

// Decode the String
var decodedString = atob(encodedString);
console.log(decodedString); // Outputs: "Hello World!"

Navegador cruzado

// Create Base64 Object
var Base64=_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e)var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f>2;o=(n&3)<<4return t,decode:function(e)var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9+/=]/g,"");while(f>2;i=(u&3)<<6t=Base64._utf8_decode(t);return t,_utf8_encode:function(e)e=e.replace(/rn/g,"n");var t="";for(var n=0;n127&&r<2048)192);t+=String.fromCharCode(r&63else128)return t,_utf8_decode:function(e)var t="";var n=0;var r=c1=c2=0;while(n191&&r<224)c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6elsec2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12return t

// Define the string
var string = 'Hello World!';

// Encode the String
var encodedString = Base64.encode(string);
console.log(encodedString); // Outputs: "SGVsbG8gV29ybGQh"

// Decode the String
var decodedString = Base64.decode(encodedString);
console.log(decodedString); // Outputs: "Hello World!"

jsFiddle


con Node.js

Así es como se codifica el texto normal en base64 en Node.js:

//Buffer() requires a number, array or string as the first parameter, and an optional encoding type as the second parameter. 
// Default is utf8, possible encoding types are ascii, utf8, ucs2, base64, binary, and hex
var b = new Buffer('JavaScript');
// If we don't use toString(), JavaScript assumes we want to convert the object to utf8.
// We can make it convert to other formats by passing the encoding type to toString().
var s = b.toString('base64');

Y así es como decodifica cadenas codificadas en base64:

var b = new Buffer('SmF2YVNjcmlwdA==', 'base64')
var s = b.toString();

con Dojo.js

Para codificar un array de bytes usando dojox.encoding.base64:

var str = dojox.encoding.base64.encode(myByteArray);

Para decodificar un codificado en base64 string:

var bytes = dojox.encoding.base64.decode(str)

bower instalar angular-base64



angular
    .module('myApp', ['base64'])
    .controller('myController', [

    '$base64', '$scope', 
    function($base64, $scope) 

        $scope.encoded = $base64.encode('a string');
        $scope.decoded = $base64.decode('YSBzdHJpbmc=');
]);

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *