JavaScript中是否有任何方法可以用来编码和解码使用base64编码的字符串?


当前回答

我宁愿使用CryptoJS中的bas64编码/解码方法,这是使用最佳实践和模式在JavaScript中实现的最流行的标准和安全加密算法库。

其他回答

现代浏览器有内置的javascript函数用于Base64编码btoa()和解码atob()。有关旧版本浏览器支持的更多信息:https://caniuse.com/?search=atob

但是,请注意atob和btoa函数仅适用于ASCII字符集。 如果你需要Base64函数的UTF-8字符集,你可以这样做:

function base64_encode(s) {      
    return btoa(unescape(encodeURIComponent(s)));
}
function base64_decode(s) {      
    return decodeURIComponent(escape(atob(s)));
}

函数b64_to_utf8(STR) { 返回decodeURIComponent(逃避(窗口。Atob (STR))); }

https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_.22Unicode_Problem.22

在Node.js中,我们可以用简单的方式做到这一点

var base64 = 'SGVsbG8gV29ybGQ='
var base64_decode = new Buffer(base64, 'base64').toString('ascii');

console.log(base64_decode); // "Hello World"

PHP .js项目有很多PHP函数的JavaScript实现。包括Base64_encode和base64_decode。

一些浏览器,如Firefox, Chrome, Safari, Opera和IE10+可以原生处理Base64。看看这个Stackoverflow问题。它使用btoa()和atob()函数。

对于服务器端JavaScript (Node),可以使用buffer进行解码。

如果你想要一个跨浏览器的解决方案,有像CryptoJS这样的现有库或如下代码:

http://ntt.cc/2008/01/19/base64-encoder-decoder-with-javascript.html(存档)

对于后者,您需要彻底测试该函数的跨浏览器兼容性。错误已经报告过了。