乐闻世界logo
搜索文章和话题

在 JavaScript 中将字符串转换为 base64 ?由于 Btoa 和 atob 已弃用

8 个月前提问
6 个月前修改
浏览次数61

1个答案

1

在JavaScript中,确实可以将字符串转换为Base64编码,并且虽然btoa()atob()这两个函数已被标记为不推荐使用,但目前在许多浏览器中仍然可以使用。但对于现代开发,推荐使用更标准的Buffer或者Web API TextEncoderTextDecoder来处理这些任务。

1. 使用 Buffer (适用于Node.js)

如果你是在Node.js环境中,可以使用Buffer来进行Base64的编码和解码。以下是如何将字符串转换为Base64编码的示例:

javascript
const originalString = 'Hello, world!'; const base64String = Buffer.from(originalString).toString('base64'); console.log(base64String); // 输出: SGVsbG8sIHdvcmxkIQ==

反向操作,即从Base64字符串解码回原始字符串:

javascript
const decodedString = Buffer.from(base64String, 'base64').toString(); console.log(decodedString); // 输出: Hello, world!

2. 使用 TextEncoderTextDecoder (适用于浏览器)

在现代浏览器中,可以使用TextEncoderTextDecoder配合Uint8Array来进行Base64的编码和解码。这种方式不使用已弃用的btoa()atob()

编码过程如下:

javascript
const originalString = 'Hello, world!'; const encoder = new TextEncoder(); const encodedData = encoder.encode(originalString); const base64String = btoa(String.fromCharCode.apply(null, encodedData)); console.log(base64String); // 输出: SGVsbG8sIHdvcmxkIQ==

解码过程如下:

javascript
const decoder = new TextDecoder('utf-8'); const decodedData = atob(base64String).split('').map(c => c.charCodeAt(0)); const decodedString = decoder.decode(new Uint8Array(decodedData)); console.log(decodedString); // 输出: Hello, world!

以上两种方法都提供了将字符串转换为Base64编码的有效途径,并且避免了使用已被弃用的功能,确保了代码的现代性和更好的兼容性。

2024年6月29日 12:07 回复

你的答案