Возможно ли пространство в кодировке base64? - PullRequest
15 голосов
/ 25 февраля 2011

Возможно ли, чтобы строка, сгенерированная из кодировки base64, имела пробел ('') в ней?

Ответы [ 5 ]

19 голосов
/ 25 февраля 2011

Нет.Следующий вопрос?

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

На самом деле пробелы и CRLF обычно пропускаются без вывода сообщений во время декодирования, поскольку они могут появиться в результате разделения длинных строк.

7 голосов
/ 25 февраля 2011

При чтении вики http://en.wikipedia.org/wiki/Base64 кажется, что в Base64 кодирование передачи для MIME (RFC 2045) пробелов разрешено и отброшено.Во всех остальных вариантах они запрещены.Ах ... и этот вопрос повторяется: Может ли строка в кодировке base64 содержать пробелы?

3 голосов
/ 02 марта 2011

Вывод кодировки Base64 никогда не будет содержать пробел. У FooBabel есть хороший (бесплатный) онлайн-инструмент для кодирования, основанный на кодеке Apache, где вы можете поиграть с такими опциями, как разрывы строк и ограничители строк - кодек foobabel base64

2 голосов
/ 15 мая 2016

Я сталкивался с этим вопросом при отладке кода 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
0 голосов
/ 11 июня 2019

Я получал строку base64 с пробелом, но мой декодер просто игнорировал пробел. К сожалению, игнорирование пробела не дало ожидаемого значения.

Пробел ("") должен был быть заменен на "+", чтобы мой декодер вывел правильное значение.

...