base64編碼和解碼在處理英文的時候沒有問題,處理中文的時候暗藏陷阱!
原因是base64在處理字串的時候使用平台的預設編碼方式。
base64 b64 = new base64();
string s = new string(b64.encode(content));
如果content是中文,那麼new string(b64.encode(content))可能使用utf-8或者gb2312,而這兩種編碼方式生成的base64編碼是不同的。這樣,若果a平台的編碼方式是utf-8,b平台是gb2312,那麼在a上用base64編碼的的字串在b平台上解碼就是亂碼。
為了避免中文亂碼的問題,可以強制在編碼的時候使用utf-8
string s= new string(b64.encode(content.getbytes("utf-8")), "utf-8"));
這樣可以強制base64編碼的時候使用utf-8
base64編碼 動畫演示 Base 64 編碼
base64 是一種十分流行的編碼方式,僅僅使用 64 個字元加等號 就可以以文字的形式表示所有的二進位制資料了,因為它能夠把二進位制格式通過編碼轉換成可見字元,所有我們就可以通過的把二進位制格式比如,檔案等通過 base64 編碼然後通過文字的形式共享出去,是不是很神奇呀。把輸入的資料轉換成 二進...
Base64編碼換行問題
一般涉及到金錢的系統都會有簽名驗證這一步,基本上會將簽名的內容進行base64編碼,最近就遇到乙個問題,一直在驗籤失敗,最後發現是jar包的問題。對方提供的sdk中所用的base64工具類是commons codec 1.10.jar的,這種情況下進行encodebase64string得到的結果是...
Base64編碼演算法
base64要求把每三個8bit的位元組轉換為四個6bit的位元組 3 8 4 6 24 然 後把6bit再添兩位高位0,組成四個8bit的位元組,也就是說,轉換後的字串理 論上將要比原來的長1 3。轉換後,我們用乙個碼表來得到我們想要的字串 也就是最終的base64編碼 這個表是這樣的 0 a 1...