2013-03-04 147 views
12

我的一所大學告訴我空字符串不是有效的base64編碼數據字符串。我不認爲這是真的(他懶得解析它),但在google搜索了一下後,甚至檢查了RFC我還沒有發現任何文檔明確說明如何正確編碼一個零字節長度的blob在base64中。是一個空字符串,長度爲零的字節有效的base64編碼數據?

所以,問題是:你有一個官方文檔的鏈接,明確指出零字節應該如何編碼base64?

回答

5

我的想法是,有兩個可能的base64值,一個空字符串可以產生;要麼是空字符串,要麼是完全由填充字符組成的字符串('===')。任何其他有效的base64字符串都包含信息。與所述第二情況下,我們可以從RFC應用下列規則:

如果比的填充字符的允許數量的在所述串,例如結束 被發現,與「=終止的基部64串==「, 多餘的填充字符可以被忽略。

因爲它們可以被忽略,所以它們可以從結果編碼的字符串中被丟棄而沒有結果,再次留下一個空字符串作爲空字符串的base64表示。

+1

我喜歡你的方法,而不是有一個空字符串,我可以有等號。順便說一句,我認爲它應該是四個或一個。 Base64編碼數據的長度應該可以除以四。但是你所依靠的功能是關於應該忽略的多餘字符,所以我只能說「=」。 – Fozi 2013-03-06 20:31:40

+0

我嘗試使用.net方法Convert.FromBase64String(「===」),但它失敗並出現異常。使用string.Empty工作並返回一個空字節[]。 – teamalpha5441 2013-11-14 19:52:35

相關問題