Java 解码base64字符串时获取奇怪符号

Java 解码base64字符串时获取奇怪符号,java,base64,Java,Base64,我在base64中有一些编码字符串“AhSld52dYtRQJDddAT4XVrymbrei6G03FFNvns6d1” 试图解码它,并有奇怪的输出符号“p”�,"����Ej��s�" Base64用于将二进制数据编码为ASCII,反之亦然。二进制数据不需要是有效的字符串,因此尝试从一些可能的随机字节创建字符串很可能会失败,并导致“垃圾” 换句话说,您不应该试图将字节[]解释为字符串,除非您从某个旁道知道它包含字符串数据 我建议您看看结果应该是什么?看起来像是错误的编码。您使用的库是什么,Ba

我在base64中有一些编码字符串“AhSld52dYtRQJDddAT4XVrymbrei6G03FFNvns6d1”

试图解码它,并有奇怪的输出符号“p”�,"����Ej��s�"


Base64
用于将二进制数据编码为ASCII,反之亦然。二进制数据不需要是有效的字符串,因此尝试从一些可能的随机字节创建
字符串很可能会失败,并导致“垃圾”

换句话说,您不应该试图将
字节[]
解释为
字符串
,除非您从某个旁道知道它包含字符串数据


我建议您看看

结果应该是什么?看起来像是错误的编码。您使用的库是什么,Base64类的源是什么?因为这看起来不像是@maslan的可能副本,所以在本例中使用了org.apache.commons.codec.binary.Base64,并尝试使用java.util.Base64;以这种方式->byte[]decoded=Base64.getDecoder().decode(结果);这两个库都给出了相同的字节数组值[2,20,-91,119,-99,-99,98,-44,80,36,55,93]@talex,结果应该类似于“uniqueServiceId=“2345”,someArguments=“1234”
String result = "AhSld52dYtRQJDddAT4XVrymbrei6G03FFNvns6d1";
byte[] decoded= Base64.decodeBase64(result.getBytes());
Arrays.toString(decoded);  --> [2, 20, -91, 119, -99, -99, 98, -44, 80, 36, 55, 93]
new String(decoded);  --> P�,"����Ej��s��