JavaScript中是否有任何方法可以用来编码和解码使用base64编码的字符串?
当前回答
以下是Sniper的文章的压缩版。它假定格式良好的base64字符串,没有回车。这个版本消除了几个循环,从Yaroslav中添加了&0xff修复,消除了尾随null,再加上一些代码golf。
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;
};
其他回答
前端:上面的解决方案很好,但后端很快……
NodeJS -不弃用
使用Buffer.from。
> inBase64 = Buffer.from('plain').toString('base64')
'cGxhaW4='
> // DEPRECATED //
> new Buffer(inBase64, 'base64').toString()
'plain'
> (node:1188987) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
// Works //
> Buffer.from(inBase64, 'base64').toString()
'plain'
我宁愿使用CryptoJS中的bas64编码/解码方法,这是使用最佳实践和模式在JavaScript中实现的最流行的标准和安全加密算法库。
在Node.js中,我们可以用简单的方式做到这一点
var base64 = 'SGVsbG8gV29ybGQ='
var base64_decode = new Buffer(base64, 'base64').toString('ascii');
console.log(base64_decode); // "Hello World"
一些浏览器,如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(存档)
对于后者,您需要彻底测试该函数的跨浏览器兼容性。错误已经报告过了。
PHP .js项目有很多PHP函数的JavaScript实现。包括Base64_encode和base64_decode。
推荐文章
- 在JavaScript的单行语句中,大括号是必要的吗?
- 有人能解释一下这个“双重否定”的把戏吗?
- 如何使用jQuery从URL中获得锚?
- 为什么typeof NaN返回'number'?
- JSON省略了Infinity和NaN;JSON在ECMAScript中的状态?
- 获取API请求超时?
- console.log(result)输出[object对象]。我如何得到result。name?
- Chart.js v2 -隐藏网格线
- React:“this”在组件函数中未定义
- 关联数组对象上的JavaScript foreach循环
- 实例化模块失败[$injector:unpr]未知提供者:$routeProvider
- 如何在JavaScript交换两个变量
- 如何从一个变量设置一个JS对象属性名
- 在JavaScript中转换为字符串
- +0和-0是一样的吗?