logo

小程序中 atob 未定义的解决方案:Base64 解码函数替代方案,can not find variable:atob,window.atob 未定义

望舒的头像
望舒

在微信小程序或其他非浏览器 JavaScript 环境中,常常会遇到 atob is not definedcan 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
No data