首页 前端知识 【JS】2026- JavaScript 中的 btoa 和 atob 全局函数

【JS】2026- JavaScript 中的 btoa 和 atob 全局函数

2024-11-04 10:11:27 前端知识 前端哥 373 851 我要收藏

c3e6cd7928ea5edec69ff94ffb080723.jpeg

在 JavaScript 中,btoa 和 atob是两个全局函数,通常用来对「字符串」进行 Base64 「编码和解码」

Base64 是一种编码方法,可以将二进制数据转换成 ASCII 字符集的文本形式。这种编码方式常用于在不支持二进制数据的系统之间传输数据,比如在 Web 应用中传输图片数据。

1.API 介绍

btoa() 函数

btoa() 方法用于将一个字符串进行 Base64 「编码」。例如,以下代码将字符串 "Hello, world!" 进行 Base64 编码:

const str = "Hello, world!";
const encodedStr = btoa(str);
console.log(encodedStr); // "SGVsbG8sIHdvcmxkIQ=="

「注意」btoa() 方法只能对 ASCII 字符进行编码,如果字符串中包含非 ASCII 字符,则会抛出一个错误。

浏览器兼容性:650186524918875374029ade588ee703.png

atob() 函数

atob() 方法用于将一个 Base64 编码的字符串进行「解码」。例如:

const encodedStr = "SGVsbG8sIHdvcmxkIQ==";
const decodedStr = atob(encodedStr);
console.log(decodedStr); // "Hello, world!"

「注意」atob() 方法只能对有效的 Base64 编码的字符串进行解码,如果字符串不是一个有效的 Base64 编码,则会抛出一个错误。

浏览器兼容性:3db4feb2bea509cdc88e061d3fbfc364.png

2.注意事项

  • btoaatob只能处理「纯文本数据」,不能用于编码二进制数据。

  • 编码后的 Base64 字符串大小会比原始数据大约 33%。

  • btoaatob是 Web 浏览器提供的函数,不是 ECMAScript 标准的一部分,因此在非浏览器环境中(如 Node.js)不可用。

3.相同点和不同点

atobbtoa有以下相同点和不同点:

相同点:

  1. 「编码方式」:两者都使用 Base64 编码方式。

  2. 「浏览器兼容性」:仅支持浏览器使用,它们都是 Web 浏览器提供的内置函数。

  3. 「文本操作」btoa()atob()函数都只能处理纯文本字符串,不能直接处理二进制数据。

  4. 「安全性」:由于只是进行内容编码和解码操作,所以「不建议作为加密手段使用」

不同点:

以表格形式展示btoa()atob()函数的不同点:


btoa()atob()
作用将文本字符串转换为 Base64 编码将 Base64 编码的字符串解码为文本
使用场景编码文本以便在不支持二进制的环境中传输解码接收到的 Base64 编码的字符串
输出格式Base64 编码的字符串解码后的原始文本字符串

4.实际应用

这两个方法的使用场景如下:

  1. 「数据传输」:在不支持二进制的上下文中,如 HTTP 请求的 URL 或 JSON 格式,可以使用 Base64 编码传输二进制数据。

  2. 「图片数据」:在 Web 页面中,可以通过 Base64 编码直接在 HTML 中嵌入图片,而不需要使用<img>标签的src属性指向一个外部图片文件。

  3. 「跨域通信」:在需要绕过浏览器的同源策略时,可以使用 Base64 编码来传输数据。

实际应用中:

在 img 标签使用 Base64 编码的图片

<img
  src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg=="
  alt="Red dot"
/>

使用 Base64 编码传输文件数据

// 假设我们有一个文件读取函数readFile,返回文件内容的字符串
function readFile(file) {
  // 这里应该是读取文件并返回字符串的逻辑
  // 为了示例,我们假设返回一个字符串
  return "这里是文件内容";
}

// 读取文件并编码
const fileContent = readFile("example.txt");
const base64Encoded = btoa(fileContent);

// 将编码后的数据发送到服务器
// 这里只是一个示意,实际应用中会通过AJAX或Fetch API等发送请求

总结

本文主要介绍 JavaScript 中 btoaatob 这两个全局函数,用来对「字符串」进行 Base64 「编码和解码」,非常好用。

往期回顾

#

如何使用 TypeScript 开发 React 函数式组件?

#

11 个需要避免的 React 错误用法

#

6 个 Vue3 开发必备的 VSCode 插件

#

3 款非常实用的 Node.js 版本管理工具

#

6 个你必须明白 Vue3 的 ref 和 reactive 问题

#

6 个意想不到的 JavaScript 问题

#

试着换个角度理解低代码平台设计的本质

2bf0b430933c663c03abeb44b423c876.gif

回复“加群”,一起学习进步

转载请注明出处或者链接地址:https://www.qianduange.cn//article/19930.html
标签
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!