bea*_*mit 2 javascript base64 google-chrome firefox4 data-uri
我正在用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
Run Code Online (Sandbox Code Playgroud)
我的文件有效,但它们不符合规范.
这是无效base64的原因吗?更重要的是,这是一个错误还是规范的一部分?
编辑:
我发布了一个答案,给出了Firefox和Chrome之间的一些奇怪之处.有谁知道标准规定了什么?或者它是那些导致碎片的松散规格之一?如果可能的话,我想要一些确定的东西.
填充字符=用于填充四个代码字符的倍数.由于每三个字节的输入被映射到四个输出字节,因此许多不是三的倍数的输入字节需要填充(一个字节==的剩余部分需要,两个字节的余数需要=).
在你的情况下,AAAA已经是一个有效的代码字,不需要填充.
| 归档时间: |
|
| 查看次数: |
3037 次 |
| 最近记录: |