Может base64 закодированная строка содержать пробел?

Мог бы base64 закодированная строка содержать пробел? А именно, это могло содержать пробел в конце строки?

PS. Я думаю о целом "MySQL, обрежет запаздывание пробела при хранении строк в полях VARCHAR" здесь ;-)

27
задан Alan Moore 23 June 2010 в 00:30
поделиться

4 ответа

Нет, не может. См. Base64 для разрешенного репозитория символов, используемого base64 , который представляет собой символы AZ , az , 0-9 , + и / (последние два могут отличаться в зависимости от реализации), а также символ заполнения = (но это также зависит от реализации, поскольку некоторые реализации вообще не используют отступы).

20
ответ дан 28 November 2019 в 05:28
поделиться

Да. Base64-кодированная строка может содержать пробелы, но символы не являются значимыми. Так что это нормально, если база данных обрезает пробелы.

Собственно говоря, оригинальная спецификация MIME рекомендует разбивать Base64-строки на строки по 72 символа. base64Binary XML может также включать новые строки, табуляции, пробелы.

В PHP, base64_decode() удаляет все символы пробелов, так что вам не нужно беспокоиться об этом.

4
ответ дан 28 November 2019 в 05:28
поделиться

Насколько я знаю, не может. Обычно строка Base64 должна состоять из набора из 64 символов. A-Z, a-z, 0-9 составляют 62 - два других зависят от реализации.

На основании того, что я знаю, теперь есть реализация, которая будет использовать пробелы в качестве символа. Основная причина этого - удобочитаемость - т.е. строка Base64 должна легко распечатываться и распознаваться.

Вы, вероятно, найдете больше информации об этом в Википедии .

0
ответ дан 28 November 2019 в 05:28
поделиться

Википедия предполагает, что существует множество вариантов кодировки 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'

?>
1
ответ дан 28 November 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: