gpt4 book ai didi

JavaScript atob 与 Notepad++ Base64 解码不同

转载 作者:行者123 更新时间:2023-12-01 00:36:42 30 4
gpt4 key购买 nike

我正在接收 zip 文件的内容(来自 API)作为 Base64 编码的字符串。

如果我将该字符串粘贴到 Notepad++ 中并执行

Plugins > MIME Tools > Base64 Decode

并将其另存为test.zip,它就成为一个有效的zip文件,我可以打开它。

现在,我正在尝试在 JavaScript 中实现同样的目标。

我已经尝试过atob(),可能还有 the answers here 中提到的所有内容和 the code from Mozilla doc .

atob 生成类似的内容,但某些字符的解码方式不同(因此成为无效的 zip 文件)。其他方法会抛出无效 URI 错误。

如何在 JavaScript 中重现 Notepad++ 行为?

最佳答案

window.atob 仅适用于解码适合 UTF-8 字符串的数据。任何无法用 UTF-8 字符串表示的内容在解码时将不等于其二进制形式。 Javascript 最多会尝试将结果字节编码为 UTF-8 字符序列。这就是您的 zip 存档最终无效的原因。

当您执行以下操作时:

var data = window.atob(encoded_data)

...您的数据在 UTF-8 字符串中具有不同的表示形式,该字符串由变量 data 引用。

您应该将二进制数据直接解码到ArrayBuffer。而 window.atob 不太适合这个。

Here是一个可以将 Base64 编码数据直接转换为 ArrayBuffer 的函数。

关于JavaScript atob 与 Notepad++ Base64 解码不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58074387/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com