JavaScript 中是否有任何方法可用于使用 base64 编码对字符串进行编码和解码?
客户端 Javascript 中的 Base64 编码和解码
IT技术
javascript
base64
2021-01-27 18:18:39
6个回答
一些浏览器,如 Firefox、Chrome、Safari、Opera 和 IE10+ 可以原生处理 Base64。看看这个Stackoverflow 问题。它正在使用btoa()
和atob()
功能。
对于服务端 JavaScript(Node),可以使用Buffer
s 进行解码。
如果您要跨浏览器解决方案,可以使用现有的库,如CryptoJS或代码,如:
http://ntt.cc/2008/01/19/base64-encoder-decoder-with-javascript.html(存档)
对于后者,您需要彻底测试跨浏览器兼容性的功能。并且已经报告了错误。
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!"
跨浏览器
为 AMD、CommonJS、Nodejs 和浏览器重写和module化 UTF-8 和 Base64 Javascript 编码和解码库/module。跨浏览器兼容。
使用 Node.js
以下是在 Node.js 中将普通文本编码为 base64 的方法:
//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');
以下是解码 base64 编码字符串的方法:
var b = new Buffer('SmF2YVNjcmlwdA==', 'base64')
var s = b.toString();
使用 Dojo.js
使用 dojox.encoding.base64 对字节数组进行编码:
var str = dojox.encoding.base64.encode(myByteArray);
要解码 base64 编码的字符串:
var bytes = dojox.encoding.base64.decode(str)
凉亭安装 angular-base64
<script src="bower_components/angular-base64/angular-base64.js"></script>
angular
.module('myApp', ['base64'])
.controller('myController', [
'$base64', '$scope',
function($base64, $scope) {
$scope.encoded = $base64.encode('a string');
$scope.decoded = $base64.decode('YSBzdHJpbmc=');
}]);
但是如何?
如果你想了解更多关于 base64 是如何编码的,特别是在 JavaScript 中,我会推荐这篇文章: JavaScript 中的计算机科学:Base64 编码
这是狙击手帖子的加强版。它假定格式良好的 base64 字符串没有回车。这个版本消除了几个循环,添加了&0xff
Yaroslav的修复,消除了尾随空值,加上一些代码高尔夫。
decodeBase64 = function(s) {
var e={},i,b=0,c,x,l=0,a,r='',w=String.fromCharCode,L=s.length;
var A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
for(i=0;i<64;i++){e[A.charAt(i)]=i;}
for(x=0;x<L;x++){
c=e[s.charAt(x)];b=(b<<6)+c;l+=6;
while(l>=8){((a=(b>>>(l-=8))&0xff)||(x<(L-2)))&&(r+=w(a));}
}
return r;
};
没有故障安全的简短而快速的 Base64 JavaScript 解码函数:
function decode_base64 (s)
{
var e = {}, i, k, v = [], r = '', w = String.fromCharCode;
var n = [[65, 91], [97, 123], [48, 58], [43, 44], [47, 48]];
for (z in n)
{
for (i = n[z][0]; i < n[z][1]; i++)
{
v.push(w(i));
}
}
for (i = 0; i < 64; i++)
{
e[v[i]] = i;
}
for (i = 0; i < s.length; i+=72)
{
var b = 0, c, x, l = 0, o = s.substring(i, i+72);
for (x = 0; x < o.length; x++)
{
c = e[o.charAt(x)];
b = (b << 6) + c;
l += 6;
while (l >= 8)
{
r += w((b >>> (l -= 8)) % 256);
}
}
}
return r;
}