23 votes

Un espace est-il possible dans un encodage base64 ?

Est-il possible qu'une chaîne de caractères générée à partir d'un encodage base64 contienne un espace (' ') ?

28voto

Cyberax Points 938

Non. Question suivante ?

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

En fait, les espaces et les CRLF sont généralement ignorés silencieusement pendant le décodage, car ils peuvent apparaître à la suite du découpage de longues chaînes de caractères.

10voto

xanatos Points 30513

En lisant le http://en.wikipedia.org/wiki/Base64 wiki il semble que dans l'encodage de transfert Base64 pour MIME (RFC 2045) les espaces sont autorisés et rejetés. Dans toutes les autres variantes, ils sont interdits. Ah... et cette question est un doublon : Une chaîne encodée en base64 peut-elle contenir des espaces blancs ?

8voto

RSC Points 212

Je recevais une chaîne base64 avec un espace, mais mon décodeur ignorait simplement l'espace. Malheureusement, ignorer l'espace ne donnait pas la valeur attendue.

L'espace (" ") a dû être remplacé par un "+" pour que mon décodeur produise la valeur correcte.

3voto

Bobby Whitman Points 41

La sortie de l'encodage Base64 ne comprendra jamais d'espace. FooBabel dispose d'un outil d'encodage en ligne (gratuit) basé sur Apache Codec, où vous pouvez jouer avec des options comme les sauts de ligne et les terminaisons de ligne. codec base64 foobabel

2voto

hpavc Points 930

J'ai rencontré cette question lors du débogage d'un code vbscript.

Curieusement, MSFT code de cette manière, au lieu de coder avec un +, il utilisera un ' '. Le MIME peut être corrigé avec s/ /+/g et fonctionnera avec /usr/bin/base64.

Notez qu'il s'agit d'un modèle bien connu pour encoder un fichier en vbscript, et que si vous le suivez en sens inverse, MSFT traitera les espaces et remettra le même fichier. (il ne sera simplement pas interopérable ailleurs).

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X