2013-03-04 146 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

相关问题