2016-11-17 4 views

Antwort

1

Derzeit ist dieses Ich verwende, und es funktioniert wie ein Zauber:

var Base64 = { 
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/=", encode: function (e) { 
    var t = ""; 
    var n, r, i, s, o, u, a; 
    var f = 0; 
    e = Base64._utf8_encode(e); 
    while (f < e.length) { 
     n = e.charCodeAt(f++); 
     r = e.charCodeAt(f++); 
     i = e.charCodeAt(f++); 
     s = n >> 2; 
     o = (n & 3) << 4 | r >> 4; 
     u = (r & 15) << 2 | i >> 6; 
     a = i & 63; 
     if (isNaN(r)) { 
      u = a = 64 
     } else if (isNaN(i)) { 
      a = 64 
     } 
     t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a) 
    } 
    return 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 < e.length) { 
     s = this._keyStr.indexOf(e.charAt(f++)); 
     o = this._keyStr.indexOf(e.charAt(f++)); 
     u = this._keyStr.indexOf(e.charAt(f++)); 
     a = this._keyStr.indexOf(e.charAt(f++)); 
     n = s << 2 | o >> 4; 
     r = (o & 15) << 4 | u >> 2; 
     i = (u & 3) << 6 | a; 
     t = t + String.fromCharCode(n); 
     if (u != 64) { 
      t = t + String.fromCharCode(r) 
     } 
     if (a != 64) { 
      t = t + String.fromCharCode(i) 
     } 
    } 
    t = Base64._utf8_decode(t); 
    return t 
}, _utf8_encode: function (e) { 
    e = e.replace(/rn/g, "n"); 
    var t = ""; 
    for (var n = 0; n < e.length; n++) { 
     var r = e.charCodeAt(n); 
     if (r < 128) { 
      t += String.fromCharCode(r) 
     } else if (r > 127 && r < 2048) { 
      t += String.fromCharCode(r >> 6 | 192); 
      t += String.fromCharCode(r & 63 | 128) 
     } else { 
      t += String.fromCharCode(r >> 12 | 224); 
      t += String.fromCharCode(r >> 6 & 63 | 128); 
      t += String.fromCharCode(r & 63 | 128) 
     } 
    } 
    return t 
}, _utf8_decode: function (e) { 
    var t = ""; 
    var n = 0; 
    var r = c1 = c2 = 0; 
    while (n < e.length) { 
     r = e.charCodeAt(n); 
     if (r < 128) { 
      t += String.fromCharCode(r); 
      n++ 
     } else if (r > 191 && r < 224) { 
      c2 = e.charCodeAt(n + 1); 
      t += String.fromCharCode((r & 31) << 6 | c2 & 63); 
      n += 2 
     } else { 
      c2 = e.charCodeAt(n + 1); 
      c3 = e.charCodeAt(n + 2); 
      t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63); 
      n += 3 
     } 
    } 
    return t 
} 

}

Zum Beispiel können Sie entschlüsseln Base64 codierte Zeichenkette wie diese:

var decodedString = Base64.decode (encodedstring);

0

Es gibt viele Ressourcen auf diesem, aber dies sollte https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding helfen.

Die kurze und süße Antwort:

var str = atob('stringOfBase64'); 
console.log(str); 
+1

atob() und btoat() sind nicht in SuiteScript verfügbar – eXtreme

+0

Ich habe sowohl "atob()' als auch "btoa()' in einem SuiteScript Client Skript getestet und beide funktionierten. Was war dein Fehler, weil ich kein Problem hatte? – VicDid

+0

Es ist ein geplantes Skript – eXtreme