Javascript &引用;要解码的字符串未正确编码";尝试解码已用Java编码的JS中的Base64时出错

Javascript &引用;要解码的字符串未正确编码";尝试解码已用Java编码的JS中的Base64时出错,javascript,java,websocket,stomp,sockjs,Javascript,Java,Websocket,Stomp,Sockjs,我在尝试将一些数据从Java传递到JS时遇到了一个问题。 原始数据的类型为byte[] 在Java方面,我正在使用: byte[] data = some_data; return Base64.getEncoder().withoutPadding().encodeToString(data) 在JS方面,我尝试使用: atob(b64数据) 在执行此操作时,我遇到了主题中的错误: DomeException:未能在“窗口”上执行“atob”:要删除的字符串 解码后的数据未正确编码 注意:删

我在尝试将一些数据从Java传递到JS时遇到了一个问题。 原始数据的类型为
byte[]

在Java方面,我正在使用:

byte[] data = some_data;
return Base64.getEncoder().withoutPadding().encodeToString(data)
在JS方面,我尝试使用:

atob(b64数据)

在执行此操作时,我遇到了主题中的错误:

DomeException:未能在“窗口”上执行“atob”:要删除的字符串 解码后的数据未正确编码

注意:删除
。而不删除adding()
会产生相同的结果


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

问题似乎在于Spring端的WebSocket/SockJS上的STOMP客户端,而不是编码数据本身

虽然数据是从带有签名的方法发送的
公共字符串getDataForExcelFile
通过WebSocket获得的结果答案如下所示:

FrameImpl{command,headers,ack,binaryBody,body,(…)}
so代替
atob(b64Data)
我需要使用
atob(b64Data.body)

问题似乎在于Spring端的WebSocket/SockJS上的STOMP客户端,而不是编码数据本身

虽然数据是从带有签名的方法发送的
公共字符串getDataForExcelFile
通过WebSocket获得的结果答案如下所示:

FrameImpl{command,headers,ack,binaryBody,body,(…)}
so代替
atob(b64Data)
我需要使用
atob(b64Data.body)

你的问题是什么?你的
b64Data
在JavaScript中是什么?打印/记录时会看到什么?如何接收?编码问题?我使用SockJS通过STOMP over WebSocket发送数据。数据是一个超过4000万字符的excel文件的二进制文件。我可以试着看看文件的开头是否显示了一些东西,但我认为这些数据应该从Java服务器“按原样”发送?您的代码看起来是正确的,所以问题可能在于数据(太长)您的问题是什么?您的
b64数据在JavaScript中是什么?打印/记录时会看到什么?如何接收?编码问题?我使用SockJS通过STOMP over WebSocket发送数据。数据是一个超过4000万字符的excel文件的二进制文件。我可以试着看看文件的开头是否显示了一些东西,但我认为这些数据应该从Java服务器“按原样”发送?您的代码看起来是正确的,因此问题可能出在数据中(太长)