我正在用 JavaScript 做一些非常邪恶的事情,我遇到了一个奇怪的问题。
我正在创建填充静态大小的缓冲区的二进制数据。如果内容没有填满缓冲区,则剩余部分用空字符填充。
下一步是转换为base64。
大小(字节)并不总是 3 的倍数,所以我可能需要在末尾添加填充。缓冲区中的最后一个字节总是空的(实际上,它大约是一 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 之间的一些奇怪之处。有谁知道标准规定了什么?或者它是那些导致碎片化的松散规范之一?如果可能的话,我想要一些确定的东西。