Javascript &引用;要解码的字符串未正确编码";尝试解码已用Java编码的JS中的Base64时出错
我在尝试将一些数据从Java传递到JS时遇到了一个问题。 原始数据的类型为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”:要删除的字符串 解码后的数据未正确编码 注意:删
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服务器“按原样”发送?您的代码看起来是正确的,因此问题可能出在数据中(太长)