btoa js实现
btoa 函数的作用
btoa 是 JavaScript 中的一个全局函数,用于将二进制字符串(通常是 ASCII 字符串)编码为 Base64 格式的字符串。Base64 是一种常见的编码方式,常用于在文本环境中传输或存储二进制数据。
基本语法
const encodedData = btoa(stringToEncode);
stringToEncode:需要编码的二进制字符串(仅支持 ASCII 字符)。encodedData:返回 Base64 编码后的字符串。
使用示例
const originalString = 'Hello, World!';
const encodedString = btoa(originalString);
console.log(encodedString); // 输出 "SGVsbG8sIFdvcmxkIQ=="
处理非 ASCII 字符
btoa 仅支持 ASCII 字符,如果输入字符串包含 Unicode 字符(如中文、表情符号等),需要先将其转换为 UTF-8 编码的二进制字符串。可以使用 encodeURIComponent 和 unescape 组合实现:

function utf8ToBase64(str) {
return btoa(unescape(encodeURIComponent(str)));
}
const unicodeString = '你好,世界!';
const encodedUnicode = utf8ToBase64(unicodeString);
console.log(encodedUnicode); // 输出 "5L2g5aW977yM5LiW55WM77yB"
解码 Base64 字符串
使用 atob 函数可以解码 Base64 字符串:
const decodedString = atob(encodedString);
console.log(decodedString); // 输出 "Hello, World!"
对于包含 Unicode 的字符串,解码时需要反向操作:

function base64ToUtf8(str) {
return decodeURIComponent(escape(atob(str)));
}
const decodedUnicode = base64ToUtf8(encodedUnicode);
console.log(decodedUnicode); // 输出 "你好,世界!"
注意事项
-
btoa和atob是浏览器环境中的全局函数,Node.js 中不直接支持。在 Node.js 中可以使用Buffer实现类似功能:// Node.js 中的 Base64 编码 const encoded = Buffer.from('Hello, World!', 'utf8').toString('base64'); console.log(encoded); // 输出 "SGVsbG8sIFdvcmxkIQ==" // Node.js 中的 Base64 解码 const decoded = Buffer.from(encoded, 'base64').toString('utf8'); console.log(decoded); // 输出 "Hello, World!" -
如果输入字符串包含非 ASCII 字符且未正确处理,
btoa会抛出错误。






