可能base64編碼的字符串包含空格?具體來說,它是否可以在字符串的端包含空格?base64編碼的字符串是否可以包含空格?
PS。我在考慮整個「MySQL將在VARCHAR字段中存儲字符串時修剪尾隨空格」;-)
可能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