"The string to be decoded is not correctly encoded " 尝试解码已在 Java 中编码的 JS 中的 Base64 时出错
"The string to be decoded is not correctly encoded " error when trying to decode Base64 in JS which has been encoded in Java
我在尝试将一些数据从 Java 传递到 JS 时遇到问题。
原始数据类型为byte[]
.
在 Java 方面,我正在使用:
byte[] data = some_data;
return Base64.getEncoder().withoutPadding().encodeToString(data)
在 JS 方面,我正在尝试使用:
atob(b64Data)
当我这样做时,我遇到了来自主题的错误:
DOMException: Failed to execute 'atob' on 'Window': The string to be
decoded is not correctly encoded.
注意:删除 .withoutPadding()
会产生相同的结果。
我的问题是,如何修改代码使错误不再出现?
问题似乎出在 Spring 端 WebSocket/SockJS 上的 STOMP 客户端,而不是编码数据本身。
虽然数据是从带有签名的方法发送的
public String getDataForExcelFile
通过 WebSocket 得到的结果答案如下所示:
FrameImpl {command, headers, ack, binaryBody, body, (...) }
所以不是
atob(b64Data)
我需要使用 atob(b64Data.body)
.
我在尝试将一些数据从 Java 传递到 JS 时遇到问题。
原始数据类型为byte[]
.
在 Java 方面,我正在使用:
byte[] data = some_data;
return Base64.getEncoder().withoutPadding().encodeToString(data)
在 JS 方面,我正在尝试使用:
atob(b64Data)
当我这样做时,我遇到了来自主题的错误:
DOMException: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.
注意:删除 .withoutPadding()
会产生相同的结果。
我的问题是,如何修改代码使错误不再出现?
问题似乎出在 Spring 端 WebSocket/SockJS 上的 STOMP 客户端,而不是编码数据本身。
虽然数据是从带有签名的方法发送的
public String getDataForExcelFile
通过 WebSocket 得到的结果答案如下所示:
FrameImpl {command, headers, ack, binaryBody, body, (...) }
所以不是
atob(b64Data)
我需要使用 atob(b64Data.body)
.