base64编码中是否有空格?

时间:2011-02-24 21:32:20

标签: encoding character-encoding base64

从base64编码生成的字符串是否可以在其中包含空格('')?

5 个答案:

答案 0 :(得分:18)

没有。下一个问题?

http://en.wikipedia.org/wiki/Base64#Variants_summary_table

实际上,在解码过程中通常会静默跳过空格和CRLF,因为它们可能会因拆分长字符串而出现。

答案 1 :(得分:7)

通过阅读http://en.wikipedia.org/wiki/Base64 wiki,似乎在Base64中允许并丢弃MIME(RFC 2045)空间的传输编码。在所有其他变种中,他们是被禁止的。啊......这个问题是重复的:Can a base64 encoded string contain whitespace?

答案 2 :(得分:3)

Base64编码输出永远不会包含空格。 FooBabel有一个很好的(免费)在线编码工具,基于Apache Codec,您可以在其中使用换行符和行终止符等选项 - foobabel base64 codec

答案 3 :(得分:1)

我在调试vbscript代码时遇到了这个问题。

奇怪的是MSFT编码就像这样,而不是用+编码它会使用''。 MIME可以用s / / + / g修复,它可以用于/ usr / bin / base64。

请注意,这是一个很好的广告模式,用于在vbscript中编码文件,如果反过来,MSFT将处理空格并将相同的文件放回原处。 (它不会在其他地方互操作)

Function b64(fqfn)
   Dim inputStream: Set inputStream = CreateObject("ADODB.Stream")
   inputStream.Open
   inputStream.Type = 1
   inputStream.LoadFromFile(fqfn)

   Dim bytes: bytes = inputStream.Read

   Dim dom: Set dom = CreateObject("Microsoft.XMLDOM")
   Dim elem: Set elem = dom.createElement("tmp")
   elem.dataType = "bin.base64"
   elem.nodeTypedValue = bytes
   b64 = elem.text
End Function

答案 4 :(得分:0)

我正在接收带有空格的base64字符串,但是我的解码器只是忽略了空格。不幸的是,忽略空间并没有提供预期的值。

为了使我的解码器输出正确的值,必须将空格(“”)替换为“ +”。