gpt4 book ai didi

javascript - 当 base64 null 后跟 =? 时,HTML5 数据 URI 失败

转载 作者:行者123 更新时间:2023-12-03 18:44:34 25 4
gpt4 key购买 nike

我正在用 JavaScript 做一些非常邪恶的事情,我遇到了一个奇怪的问题。

我正在创建填充静态大小缓冲区的二进制数据。如果内容没有填满缓冲区,则剩余部分用空字符填充。

下一步是转换为 base64。

大小(字节)并不总是 3 的倍数,因此我可能需要在末尾添加填充。缓冲区中的最后一个字节始终为空(实际上,大约有 1 kb 的空值)。

当我在 Firefox 和 Chrome 上将其转换为 base64 时,当我有一个尾随 '=' 时,我得到一个 ERR_INVALID_URL,但如果我没有,它下载正常。

例如:

var url = "data:application/octet-stream;base64,";

window.open(url + "AAAA"); // works
window.open(url + "AAAA="); // doesn't work
window.open(url + "icw="); // works

我的文件有效,但不符合规范。

这是无效 base64 的原因吗?更重要的是,这是一个错误还是规范的一部分?

编辑:

我发布了一个答案,给出了 Firefox 和 Chrome 之间的一些奇怪之处。有谁知道标准规定了什么?或者它是导致碎片化的那些松散规范之一?如果可能的话,我想要一些明确的东西。

最佳答案

填充字符=用于填充四个代码字符的倍数。由于每三个字节的输入被映射到四个字节的输出,一些不是三的倍数的输入字节需要填充(一个字节的余数需要 == ,两个字节的余数需要 =)。

在你的例子中,AAAA 已经是一个有效的代码字,不需要填充。

关于javascript - 当 base64 null 后跟 =? 时,HTML5 数据 URI 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6238180/

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