我正在尝试对一个字节数组进行Base64解码,只要字节数组中不包含“-”或“_”等特殊字符,一切都可以正常运行。但是当字节数组包含“-”时,就会抛出异常:
java.lang.IllegalArgumentException: Illegal base64 character 2d
at java.util.Base64$Decoder.decode0(Base64.java:714)
at java.util.Base64$Decoder.decode(Base64.java:526)
当字节数组包含'_'时,就会抛出异常。
java.lang.IllegalArgumentException: Illegal base64 character 5f
at java.util.Base64$Decoder.decode0(Base64.java:714)
at java.util.Base64$Decoder.decode(Base64.java:526)
即代码在字符2d到5f之后的差异。
这些代码是什么?我如何解码任何值,而不管代码中是否有这些字符?
以下是我的代码片段:
import java.util.Properties;
import java.util.Base64;
import java.io.*;
...
public class BasicSample {
public static void main(String[] args) {
byte[] encoded = res.getBytes("s_id");
System.out.printf("\nInside Byte %s\n",new String(encoded) );
try {
byte[] decoded = Base64.getDecoder().decode(encoded);
System.out.printf("\nDecoded Byte %s\n",new String(decoded, "UTF-8") );
} catch(Exception e) {
e.printStackTrace();
}
}
}
Base64
对数据进行编码,要么你读取数据的方式有误。弄清楚服务器上数据的确切编码方式,并使用正确的解码器。 - Karol Dowbecki