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));