python的base64结果和java不一样
直接上代码
py
data = {
'name' : 'Connor'
}
print(json.dumps(data))
print(b64encode(bytes(json.dumps(data))))
结果
{"name": "Connor"}
eyJuYW1lIjogIkNvbm5vciJ9
java
BASE64Encoder encoder = new BASE64Encoder();
Map<String,String> ret = new HashMap<>();
ret.put("name","Connor");
String s = JSON.toJSONString(ret);
out.println(s);
try {
out.println(encoder.encode(s.getBytes("UTF-8")));
} catch( UnsupportedEncodingException e ) {
e.printStackTrace();
}
结果
{"name":"Connor"}
eyJuYW1lIjoiQ29ubm9yIn0=
求高人指点。。。不胜感激!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
py的多了一个空格
楼上的好眼力
使用separators来去除空格问题
如果你看 一下java8以上的版本中的java.util.Base64.Encoder的源码,你会看到这里涉及两种不同的标准 RFC 2045/ RFC 4648
区别在于最后两个字符的选用、回行符选用、结尾是否配齐等选项。
很多实现不完全是按上面的标准来的,导致结果各异。
用是面的类,测试如下
会输出:
楼主解决了吗?为何我python输出还是
{"name":"Connor"}
b'eyJuYW1lIjogIkNvbm5vciJ9'
没看到空格不说,多了个b,你怎么没有b啊?python和java的输出还是不一样