开发微信公众号时用到退款通知结果接口,按照文档写解密,最后得到返回结果是xml文件,其中有“退款入账账户 ”这个参数,信息是中文的,我的xml中显示乱码。当退款地址是钱包时,不报错;退款地址是银行时报编码错误。这两种方式 xml一直是乱码。尝试了但是没有解决,所以请做过的前辈请教。
微信编码使用的是 ISO-8859-1 把编码从 ISO-8859-1 转为UTF-8
InputStream inStream;
inStream = request.getInputStream();
ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inStream.read(buffer)) != -1) {
outSteam.write(buffer, 0, len);
}
outSteam.close();
inStream.close();
String result = new String(outSteam.toByteArray(), "utf-8");
微信返回的消息是流,解析后转化为map
Map<Object, Object> m = XmlUtil.xml2map(result, false);
然后获取加密信息
String a = m.get("req_info").toString();
对a进行操作
解密后得到的数据乱码。是对A转码吗?还是在base64解码时规定编码格式?
用key*对加密串B做AES-256-ECB解密时编码错误