Android之解決Base64 encode中文亂碼問題
1、問題
需求需要,把字串轉化為UTF-8編碼之後需要base64.encode處理,但是我寫了
String ss = new String(value.getbytes("UTF-8"), "UTF-8");
Base64.encode(ss);
死活出不來,依然亂碼,然後寫了檢測當前編碼格式,然後轉化成UTF-8,
String ss = new String(value.getbytes("GB1312"), "UTF-8");
Base64.encode(ss);
還是不行
2、原因
程式碼封裝裡面Base64.encode(String s)函式裡面寫了這段程式碼
{
byte[] bytes = s.getBytes("US-ASCII");
encodeBytes(bytes);
}
很明顯,特麼轉成了“US-ASCII”編碼格式,前面轉的UTF-8格式做了無用功,特麼像日了狗一樣
3、解決辦法和總結
不要寫成把字串轉成UTF-8,因為到時候還是得轉成bytes,傳到Base64.encode函式裡面去,我們直接這樣轉
Base64.encodeBytes(value.getBytes("UTF-8"));
以後一定要記得先看原始碼,然後分析,還有就是要記得Base64執行encode的時候,我們直接傳編碼格式的位元組流進去是最安全的,切記,以後不要換這個錯誤了。