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