我正在接收 zip 文件的内容(来自 API)作为 Base64 编码的字符串。
如果我将该字符串粘贴到 Notepad++ 中并转到
插件 > MIME 工具 > Base64 解码
并将其另存为test.zip
,它就成为一个有效的zip文件,我可以打开它。
现在,我正在尝试在 JavaScript 中实现同样的目标。
我已经尝试过atob()
,可能这里的答案中提到的所有内容以及Mozilla 文档中的代码。
atob
产生类似的内容,但某些字符的解码方式不同(因此成为无效的 zip 文件)。其他方法会抛出无效 URI 错误。
如何在 JavaScript 中重现 Notepad++ 行为?
仅window.atob
适用于解码适合 UTF-8 字符串的数据。任何无法用 UTF-8 字符串表示的内容在解码时将不等于其二进制形式。Javascript 最多会尝试将结果字节编码为 UTF-8 字符序列。这就是您的 zip 存档最终无效的原因。
当您执行以下操作时:
var data = window.atob(encoded_data)
Run Code Online (Sandbox Code Playgroud)
...您的数据在 UTF-8 字符串中具有不同的表示形式,该字符串由变量 引用data
。
您应该将二进制数据直接解码为ArrayBuffer
. 并且window.atob
不太适合这个。
这是一个可以将 Base64 编码数据直接转换为ArrayBuffer
.
归档时间: |
|
查看次数: |
849 次 |
最近记录: |