btoa是浏览器中用于将字符串转换为 Base64 编码的方法,但在微信小程序中并不支持。
随着wx.arrayBufferToBase64()
和 wx.base64ToArrayBuffer()
在新版本库中被废除,最好实现btoa效果的方法是自己去自定义一个函数去实现,下面是一个自定义btoa函数:
export function base64Encode(str) {
let CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
let out = '', i = 0, len = str.length, c1, c2, c3, enc1, enc2, enc3, enc4;
while (i < len) {
c1 = str.charCodeAt(i++);
c2 = str.charCodeAt(i++);
c3 = str.charCodeAt(i++);
enc1 = c1 >> 2;
enc2 = ((c1 & 3) << 4) | (c2 >> 4);
enc3 = ((c2 & 15) << 2) | (c3 >> 6);
enc4 = c3 & 63;
if (isNaN(c2)) {
enc3 = enc4 = 64;
} else if (isNaN(c3)) {
enc4 = 64;
}
out += CHARS.charAt(enc1) + CHARS.charAt(enc2) + CHARS.charAt(enc3) + CHARS.charAt(enc4);
}
return out;
}
// 使用示例
let strToEncode = "你好,世界!";
let encodedStr = base64Encode(strToEncode);
console.log(encodedStr);