我想解码UserData。在阅读它作为字符串时comment,我正在做以下事情:
String[] split = comment.split("="); if(split[0].equals("UserData")) { System.out.println(split[1]); byte[] callidArray = Arrays.copyOf(java.util.Base64.getDecoder().decode(split[1]), 9); System.out.println("UserData:" + Hex.encodeHexString(callidArray).toString()); } 但我得到以下异常:
java.lang.IllegalArgumentException:非法base64字符1
可能是什么原因?
图像表明您尝试解码的字符串包含SOH和BEL等字符。这些是ASCII控制字符,不会出现在Base64编码的字符串中。
(Base64通常由字母,数字和+,\和=。组成。有一些变体格式,但从不包含控制字符。)
这由异常消息确认:
java.lang.IllegalArgumentException: Illegal base64 character 1 SOH字符具有ASCII码1。
结论:
您无法解码该字符串,就像它是Base64一样。它不会起作用。 它看起来像字符串不是“编码”在所有...中的什么“编码”在Java中是指通常意义上的。 如果没有明确的解释,我们无法告诉您应该怎么做:
(二进制)数据来自哪里, 你期望它包含什么,和 如何读取数据并将其转换为Java String对象:向我们展示执行该操作的代码!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。