是一種基於 64 個可列印字元(具體的字元見底部的 base64 碼錶)來表示二進位數據的表示方法。由於2的6次方等於64,所以每6個位元為一個單元,對應某個可列印字元。三個位元組有24個位元,對應於4個Base64單元,即3個位元組需要用4個可列印字元來表示。它可用來作為電子郵件的傳輸編碼。
下面是將 "test" 字元串轉換為 base64 編碼的過程:
最後如果補了 4 個 0 則在結尾加 2 個 =,如果補了 2 個 0 則在結尾加 1 個 =,如果剛好則不加 =
你在測試的時候可能發現,你用系統命令和用代碼對同一個字元串做 base64 編碼,但結果卻不一樣:
echo base64_encode(test); // 用 PHP 的 base64_encode 輸出: dGVzdA==
// 但在命令窗口 通過 echo "test" | base64 命令卻輸出:dGVzdAo=
那是因為 linux shell 使用 echo 時會自動添加一個換行
echo base64_encode(test.PHP_EOL); // 加上一個換行符就輸出:dGVzdAo= 了
//或通過 echo -n "test" | base64 命令也能輸出:dGVzdA==
另外 base64 編碼用 4 個字元表示原來的 3 個字元(3 * 8 = 4 * 6),最後可能還要補 『=』,所以編碼後的長度至少是原來的 4/3 。
// 將圖片編碼後傳輸 $image = base64_encode(file_get_contents(/Users/xxx/Downloads/3f.jpg));
<img src="data:image/jpeg;base64, $image" alt= "" />
ASCII_碼錶?baike.baidu.com