Base64開發者須知

Base64編碼表

clipboard.png

URL和正則表達式中用到的Base64改進

Base64編碼可用於在HTTP環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就採用了Base64來將一個較長的惟一標識符(通常爲128-bit的UUID)編碼爲一個字符串,用做HTTP表單和HTTP GET URL中的參數。在其餘應用程序中,也經常須要把二進制數據編碼爲適合放在URL(包括隱藏表單域)中的形式。此時,採用Base64編碼不只比較簡短,同時也具備不可讀性,即所編碼的數據不會被人用肉眼所直接看到。正則表達式

然而,標準的Base64並不適合直接放在URL裏傳輸,由於URL編碼器會把標準Base64中的「/」和「+」字符變爲形如「%XX」的形式,而這些「%」號在存入數據庫時還須要再進行轉換,由於ANSI SQL中已將「%」號用做通配符。數據庫

爲解決此問題,可採用一種用於URL的改進Base64編碼,它不只在末尾填充'='號,並將標準Base64中的「+」和「/」分別改爲了「-」和「_」,這樣就免去了在URL編解碼和數據庫存儲時所要做的轉換,避免了編碼信息長度在此過程當中的增長,並統一了數據庫、表單等處對象標識符的格式。編程

另有一種用於正則表達式的改進Base64變種,它將「+」和「/」改爲了「!」和「-」,由於「+」,「*」以及前面在IRCu中用到的「[」和「]」在正則表達式中均可能具備特殊含義。編程語言

此外還有一些變種,它們將「+/」改成「_-」或「._」(用做編程語言中的標識符名稱)或「.-」(用於XML中的Nmtoken)甚至「_:」(用於XML中的Name)。編碼

相關文章
相關標籤/搜索