String.getBytes()未指定编码方式,导致有的机器可行有的不可行

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/y41992910/article/details/80810243

最近在对接一个接口的时候,发现同样的数据,在一台机器上能跑通,另外三台就跑不通,通过排查,发现原因是:

调用String.getBytes()的时候为指定编码方式,采用了默认编码

return new String(Base64.encode(String.getBytes()));

正确的:

return new String(Base64.encode(String.getBytes(Charset.forName("UTF-8"))));

错误情况下得到的base64(最后面应该是==)

PFJFU1BPTlNFPjxGUFFRTFNIPjE1Mjk5MTg1ODI4NDA8L0ZQUVFMU0g+PEZQX0RNPjE1MjAwMDE4NjM1NzwvRlBfRE0+PEZQX0hNPjMwNjA0ODY1PC9GUF9ITT48SllNPjE0MDcwMjk1MzcxMzY2ODIxMDkyPC9KWU0+PEtQUlE+MjAxODA2MjUxNzI1MDE8L0tQUlE+PFBERl9VUkw+PCFbQ0RBVEFbaHR0cDovL2Rldi5mYXBpYW8uY29tOjE5MDgwL2R6ZnAtd3gvcGRmL2Rvd25sb2FkP3JlcXVlc3Q9ZTV1aGY4V0VUSU9NZ2FhMmNDVU10blFINjFmV0FPY2JCLkRQOFRkaUl2d1VRRWtna2ZzQ2tWV2xvdXFrUUpIdGlzVWJXd0tnNmxvXyU1RWZpZEdoQkhGXV0+PC9QREZfVVJMPjxTUF9VUkw+PCFbQ0RBVEFbaHR0cDovL3Rlc3R3eC5mYXBpYW8uY29tL2ZwdC13ZWNoYXQvd3hhZGRjYXJkLmRvP2NvZGU9U1FsVXhycE1LSmQlMkJwMUlLY0hsT2phMEFmUVVMZHhxMm0xem1ZclQzZW92Q0NtazVGQzFXVDJHYkE5c3RkMEtuajNHTmlsazA2R0JJJTBBZ01TZHpvNE5CQSUzRCUzRF1dPjwvU1BfVVJMPjwvUkVTUE9OU0U+

猜你喜欢

转载自blog.csdn.net/y41992910/article/details/80810243