Java - 解码base64 - 非法base64字符1

标签 java base64

我的文件中有以下数据: enter image description here

我想解码用户数据。将其作为字符串 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: Illegal base64 character 1

可能是什么原因?

最佳答案

该图像表明您尝试解码的字符串包含 SOH 和 BEL 等字符。这些是 ASCII 控制字符,永远不会出现在 Base64 编码的字符串中。

(Base64 通常由字母、数字、+\= 组成。有一些变体格式,但控制字符是从未包含在内。)

这由异常消息确认:

  java.lang.IllegalArgumentException: Illegal base64 character 1

SOH 字符的 ASCII 代码为 1。

<小时/>

结论:

  1. 您无法将该字符串像 Base64 一样进行解码。这是行不通的。
  2. 看起来字符串根本没有“编码”......在Java中“编码”的正常意义上。
  3. 如果没有明确说明以下内容,我们无法就您应该如何使用它提供建议:

    • (二进制)数据来自哪里,
    • 您期望其中包含的内容,以及
    • 如何读取数据并将其转换为 Java String 对象:向我们展示执行此操作的代码!

关于Java - 解码base64 - 非法base64字符1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57533499/

相关文章:

file - 钛从流中保存文件

java - GNU Octave - base64_decode/base64_encode

java - 反序列化 Jersey 1 中的 List<Map<String, String>> QueryParam

Java Android 应用程序和 Node.js + Express.js API

java - 如何根据 xml 解析的值在 listview 中动态更改颜色?

php - 确定值是 base64 字符串还是图像 URL 的最佳方法是什么?

java - PHP/Java for Android 之间的数据编码/解码

google-apps-script - Google Script base64 解码并将文件保存到云端硬盘

java - 更快地找到邻居索引的方法

java - NoClassDefFoundError : org/apache/commons/lang3/StringUtils