在微信小程序或其他非浏览器 JavaScript 环境中,常常会遇到 atob is not defined
或 can not find variable: atob
的错误。这是因为 window.atob()
属于浏览器内置的 API,在小程序、Node.js 等环境中不可用。
为了兼容这些环境,我们可以自己实现一个 Base64 解码函数,替代 atob
使用。
✅ 自定义 Base64 解码函数(兼容小程序)
下面是一个无需依赖任何浏览器 API 的 Base64 解码函数,可直接在微信小程序中使用:
复制
export function base64Decode(base64) {
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
let str = '';
let buffer = 0;
let bits = 0;
for (let i = 0; i < base64.length; i++) {
const c = base64.charAt(i);
const index = chars.indexOf(c);
if (index === -1) {
continue;
}
buffer = (buffer << 6) | index;
bits += 6;
if (bits >= 8) {
bits -= 8;
str += String.fromCharCode((buffer >> bits) & 0xFF);
}
}
return str;
}
🔍 使用示例
复制
const encoded = "SGVsbG8g5L2g5aW9IQ==";
const decoded = base64Decode(encoded);
console.log(decoded); // 输出: Hello 世界!
📌 常见问题
-
为什么不能使用
window.atob()
? 微信小程序并不支持window
对象,因此window.atob
也不存在。 -
是否可以使用第三方库? 可以,但如果只需要简单解码,建议使用这个轻量函数,避免包体积膨胀。
作者:https://blog.xn--rpv331d.com/望舒
链接:https://blog.xn--rpv331d.com/望舒/blog/38
转载注意保留文章出处...
0
1
0
82