Мог бы base64 закодированная строка содержать пробел? А именно, это могло содержать пробел в конце строки?
PS. Я думаю о целом "MySQL, обрежет запаздывание пробела при хранении строк в полях VARCHAR" здесь ;-)
Нет, не может. См. Base64 для разрешенного репозитория символов, используемого base64
, который представляет собой символы AZ
, az
, 0-9
, +
и /
(последние два могут отличаться в зависимости от реализации), а также символ заполнения =
(но это также зависит от реализации, поскольку некоторые реализации вообще не используют отступы).
Да. Base64-кодированная строка может содержать пробелы, но символы не являются значимыми. Так что это нормально, если база данных обрезает пробелы.
Собственно говоря, оригинальная спецификация MIME рекомендует разбивать Base64-строки на строки по 72 символа. base64Binary XML может также включать новые строки, табуляции, пробелы.
В PHP, base64_decode()
удаляет все символы пробелов, так что вам не нужно беспокоиться об этом.
Насколько я знаю, не может. Обычно строка Base64 должна состоять из набора из 64 символов. A-Z, a-z, 0-9 составляют 62 - два других зависят от реализации.
На основании того, что я знаю, теперь есть реализация, которая будет использовать пробелы в качестве символа. Основная причина этого - удобочитаемость - т.е. строка Base64 должна легко распечатываться и распознаваться.
Вы, вероятно, найдете больше информации об этом в Википедии .
Википедия предполагает, что существует множество вариантов кодировки Base64:
http://en.wikipedia.org/wiki/Base64
Так что ответ, вероятно, зависит от что вам нужно сделать со строкой. Но я бы осмелился сказать, что вы создали на PHP с помощью base64_encode (), поэтому кажется безопасным добавлять пробелы:
<?php
$original_data = 'Lorem ipsum dolor sit amet';
$encoded_data = base64_encode($original_data);
$padded_data = ' ' . chunk_split($encoded_data, 3, ' ') . ' ';
echo base64_decode($padded_data); // Prints 'Lorem ipsum dolor sit amet'
?>