Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在javascript客户端上解码base64字符串_Java_Javascript_Utf 8_Websocket_Base64 - Fatal编程技术网

无法在javascript客户端上解码base64字符串

无法在javascript客户端上解码base64字符串,java,javascript,utf-8,websocket,base64,Java,Javascript,Utf 8,Websocket,Base64,我使用WebSocket将数据从JavaTomcat服务器发送到浏览器。我得到错误:“Uncaught InvalidCharacterError:'atob'失败:要解码的字符串未正确编码。” 这是我的密码: (java服务器代码): 我的base64字符串在java和javascript端看起来像这样:[B@74193bd0[B@24a6103c 如果有必要,我正在使用org.glassfish.jersey.internal.util.Base64。我真的很困惑:( 我的base64字符串

我使用WebSocket将数据从JavaTomcat服务器发送到浏览器。我得到错误:“Uncaught InvalidCharacterError:'atob'失败:要解码的字符串未正确编码。”

这是我的密码:

(java服务器代码):

我的base64字符串在java和javascript端看起来像这样:
[B@74193bd0[B@24a6103c

如果有必要,我正在使用org.glassfish.jersey.internal.util.Base64。我真的很困惑:(

我的base64字符串在java和javascript端看起来像这样:
[B@74193bd0[B@24a6103c

这不是base64。这是对两个字节数组调用
toString()
的结果的串联。您使用的方法返回的是
字节[]
,而不是字符串,这意味着您的字符串串联不合适。您可以使用
base64.encodeAsString
-或完全使用不同的base64库(例如).但实际上你不应该做任何字符串连接

您的
generateImageString
代码已完全中断。完全不清楚为什么要将整数转换为字符串,获取该字符串的UTF-8表示形式,然后将字节数组转换为base64…然后在循环中执行该操作。这不是获得任何有意义内容的方法


我怀疑您实际上应该以
byte[]
而不是
int[]
开始-不清楚这些值是什么-但是您需要调用
Base64.encode
,传递
byte[]
in.如果调用
Integer.toString
或连接Base64数据的位,则操作错误。

[B@24a6103c将字节数组表示为字符串,因为Base64.encode返回字节数组

在将字节数组连接到字符串base64Image之前,需要将其转换为字符串

我想你应该这样做:

base64Image += new String(Base64.encode(Integer.toString(imageData[i]).getBytes("UTF8")));

是否可以从int[]到byte[]再到base64字符串,然后在javascript端将其反转?我不知道我离这有多远…@SnockedPancakes:是的,这是完全可能的-但您需要确定如何将
int[]
映射到
字节[]
,例如在结尾方面。不,这绝对不是OP应该做的。
function onMessage(evt)
{
  base64ImageDataString = evt.data;
  imageDataString = window.atob(base64ImageDataString);
}
base64Image += new String(Base64.encode(Integer.toString(imageData[i]).getBytes("UTF8")));