base64编码的字符串是否可以包含空格?
可能base64编码的字符串包含空格?具体来说,它是否可以在字符串的端包含空格?base64编码的字符串是否可以包含空格?
PS。我在考虑整个“MySQL将在VARCHAR字段中存储字符串时修剪尾随空格”;-)
不,它不能。见Base64由base64
使用允许的字符库,这是人物A-Z
,a-z
,0-9
,+
和/
(最后两个可能因实施不同),以及填充字符=
(不过这也取决于实现一些实现根本不使用填充)。
是的,它可以,它们不属于代码,但在大多数实现中,它们可以添加保持可读性TY。大多数解码器忽略空格。 – jigfox 2010-06-22 10:18:18
是的,这是真的,但它们对编码字符串并不重要,这意味着它们可以安全地被忽略,如果MySQL或谁将它们剥离它们都没有关系。 OP的意图显然是将'base64'编码的字符串存储在绝对保存的MySQL'VARCHAR'列中。 – 2010-06-22 10:51:40
谢谢你们,我的意思是“不”,一个base64字符串包含空格 - 不是“可以” - 我的错。所以总而言之,它可以,但它们是无关紧要的。 :-)我现在得到它 – Dougal 2010-06-22 16:09:15
*表明,有也像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'
?>
我想是一种证明它的迂回方式!谢谢 – Dougal 2010-06-22 10:16:18
是的。 Base64编码的字符串可以包含空格,但字符不重要。所以,如果数据库修剪空格,那也没关系。
事实上,原始的MIME规范建议将Base64字符串分成72个字符的行。 XML的base64Binary还可能包含换行符,制表符,空格。
在PHP中,base64_decode()
去除所有whiltespace字符,所以你不必担心它。
它不应该,但它可能会。
有效的base64字符串不应当包含空格由于编码字母表应仅由AZ的AZ 0-9 +/
然而,如果编码的数据恰好包含一个“+”字符,并且数据是在URL中传递时,可能会无意中将其转换为空格。所以你可能会遇到一个假设的base64字符串,在这种情况下它似乎有空格。
如果是这种情况,只需在解码前用空格替换空格即可。
PS。“在VARCHAR字段存储字符串时,MySQL将修剪尾随空白”这里
顺便说一句,我想对整个,一个varchar的尾部空格将不会被随便剥夺像MySQL 5.0.3
的但是,如果您使用URL安全的Base64编码算法,这应该不是问题:) – Ren 2012-10-31 15:24:25
提及“+”/空间问题。刚刚有一个URL提供Base64字符串,并将+转换为空格。 – 2014-01-14 16:12:04
我正在为这个疯狂。谢谢! – 2017-03-02 18:55:15
P'raps我的意思是“做”超过“可以”;-) – Dougal 2010-06-22 16:07:46
以及你可以添加空白取决于实施,但主要是他们只会被剥夺,因为他们实际上是有效的,因为他们不是B64“字母表的一部分“但通常包含在显示目的中,”可读性“实际上并没有达到它的目的,因为”正常“人类首先读取b64字符串 – My1 2016-02-23 10:17:34