1. 程式人生 > >為什麼要使用base64編碼,有哪些情景需求?

為什麼要使用base64編碼,有哪些情景需求?

Base64編碼原理與應用

Java實現BASE64編解碼

公鑰證書也好,電子郵件資料也好,經常要用到Base64編碼,那麼為什麼要作一下這樣的編碼呢?

我們知道在計算機中任何資料都是按ascii碼儲存的,而ascii碼的128~255之間的值是不可見字元。
而在網路上交換資料時,比如說從A地傳到B地,往往要經過多個路由裝置,
由於不同的裝置對字元的處理方式有一些不同,這樣那些不可見字元就有可能被處理錯誤,這是不利於傳輸的。
所以就先把資料先做一個Base64編碼,統統變成可見字元,這樣出錯的可能性就大降低了。

使用場景:

對證書來說,特別是根證書,一般都是作Base64編碼的,因為它要在網上被許多人下載。

電子郵件的附件一般也作Base64編碼的,因為一個附件資料往往是有不可見字元的。
比如http協議當中的key value欄位的值,必須進行URLEncode ,
因為一些特殊符號(等號或者空格)是有特殊含義的,造成混淆,解析失敗,那麼需要把這些值統一處理為可見字元,傳輸完再解析回來。
xml格式的檔案中如果想嵌入另一個xml檔案。直接嵌入,那麼各種標籤(有兩套xml標籤)就混亂了,不容易被解析。怎麼辦?
1,把另一個xml編譯成位元組陣列轉換成逗號隔開的字串。
2,編譯成可見字元。
結果:2好些。因為1消耗的空間比原來多一倍,而2只是多三分之一。
網頁中一些小圖片可以直接以base64編碼的方式嵌入。不用再用連結請求消耗資源。
很多比較老的協議還是隻支援純文字的,比如SMTP協議。
有時在一些特殊應用的場合,大多數訊息是純文字的,偶爾需要用這條純文字通道傳一張圖片之類的情況發生的時候,就會用到base64
http雖然也是純文字協議,但是http有針對二進位制資料做特殊的規定(mime),所以用http直接傳輸二進位制資料是可行的。
但是有些特殊情況,比如返回需要在json內部之類的。