我正在用JavaScript做一些非常邪惡的事情,而且我遇到了一個奇怪的問題。當base64 null後跟= =時,HTML5數據URI失敗
我正在創建填充靜態大小的緩衝區的二進制數據。如果內容未填充緩衝區,則其餘部分填充空字符。
下一步是轉換爲base64。
大小(字節)不總是3的倍數,所以我可能需要添加填充到最後。緩衝區中的最後一個字節總是空(實際上,它大約是一個空值)。
當我將它轉換爲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之間的奇怪的現象。有誰知道該標準指定了什麼?或者它是導致碎片的鬆散規格之一?如果可能的話,我想要一些確定性的東西。
我添加了另一個工作(非空字符串與等號)。 – tjameson 2011-06-04 17:28:26
哇,可以肯定的是,有很多關於數據URL和編碼的混淆和矛盾的信息。 – Pointy 2011-06-04 17:49:08