用base64工具类对中文进行处理时出现异常,在数据加解密场景中经常使用
java.lang.IllegalArgumentException: Illegal base64 character 3f at java.util.base64$Decoder.decode0(base64.java:714) at java.util.base64$Decoder.decode(base64.java:526)原因分析
原因是因为编码encode和解密decode写反了,decode不能对正常字符串进行解码,所以出现异常。异常代码如下:
String data = "这是一个小例子haha"; // 这里直接使用了decode对字符串进行解码,出现异常 byte[] a = base64.getDecoder().decode(data);正常用法
String data = "这是一个小例子haha";
// 字符串专为base64编码字符串
String encodeStr = new String(base64.getEncoder().encode(data.getBytes()));
System.out.println("encodeStr:" + encodeStr);
// base64字符串解码
String decodeStr = new String(base64.getDecoder().decode(encodeStr));
System.out.println("decodeStr:" + decodeStr);
PS:出现一些无法理解的异常时,往往是因为一些很弱鸡的问题导致的。



