首页 > 解决方案 > 尝试在已用 Java 编码的 JS 中解码 Base64 时出现“要解码的字符串未正确编码”错误

问题描述

尝试将一些数据从 Java 传递到 JS 时出现问题。原始数据的类型为byte[]

在我使用的 Java 方面:

byte[] data = some_data;
return Base64.getEncoder().withoutPadding().encodeToString(data)

在 JS 方面,我正在尝试使用:

atob(b64Data)

当我这样做时,我遇到了该主题的错误:

DOMException: 无法在 'Window' 上执行 'atob': 要解码的字符串未正确编码。

注意:删除.withoutPadding()会产生相同的结果。

我的问题是,如何重新编写代码以使错误不再出现?

标签: javascriptjavawebsocketstompsockjs

解决方案


看来问题出在 Spring 端通过 WebSocket/SockJS 的 STOMP 客户端,而不是编码数据本身。

虽然数据是从带有签名的方法发送的,但 public String getDataForExcelFile 通过 WebSocket 得到的结果如下所示:

FrameImpl {command, headers, ack, binaryBody, body, (...) }所以 atob(b64Data)我需要使用atob(b64Data.body).


推荐阅读