A. java base64解碼 怎麼是亂碼呢
會亂碼的原因是你的編碼不一致導致的
php中的urlencode的編碼是和系統編碼一致的(比如windows默認gb2312,ubuntu默認utf-8)
所以首先需要確定你的系統編碼,之後根據得到的系統編碼在調用java的decode方法的時候,將這個編碼傳入(考慮到你的例子中有繁體字,所以,建議你使用utf-8編碼),以下是我使用utf-8編碼的例子(php環境是ubuntun下)
B. 在Java中如何進行BASE64編碼和解碼
importsun.misc.BASE64Encoder;
importsun.misc.BASE64Decoder;
//將s進行BASE64編碼
publicstaticStringgetBASE64(Strings){
if(s==null)returnnull;
return(newsun.misc.BASE64Encoder()).encode(s.getBytes());
}
//將BASE64編碼的字元串s進行解碼
(Strings){
if(s==null)returnnull;
BASE64Decoderdecoder=newBASE64Decoder();
try{
byte[]b=decoder.decodeBuffer(s);
returnnewString(b);
}catch(Exceptione){
returnnull;
}
}
C. 關於java中BASE64解碼演算法
讓我們再來看一個實際的例子,加深印象!
轉換前 10101101 10111010 01110110
轉換後 00101011 00011011 00101001 00110110
十進制 43 27 41 54
對應碼表中的值 r b p 2
將第一個字元右移2位得00101011, 得第一個目標字元00101011
將第一個字元左移4位得11010000,第二個字元右移4位的00001011相加得第二個目標字元11011011
將第二個字元左移2位得11101000,第三個字元右移6位的00000001相加的第三個目標字元11101001
第四個目標字元就是01110110
然後讓各個目標字元與0x3F進行and位操作,讓最高的兩位為零。
D. java的base64在安卓解碼不了,怎麼回事
估計是代碼的問題,示例如下:
Android端:編碼:
String oneBaseEncoder = Base64.encode(msg.getBytes());
解碼:
String oneBaseDecoder = new String(Base64.decode(msg));
JAVA WEB端:編碼:
String oneBaseEncoder = new BASE64Encoder().encode(jsonString.getBytes("utf-8"));
解碼:
String oneBaseDecoder = new String(new BASE64Decoder().decodeBuffer(jsonString));