我正在使用WebSocket將數據從我的java tomcat服務器發送到我的瀏覽器。我得到錯誤:「Uncaught InvalidCharacterError:'atob'failed:要解碼的字符串編碼不正確。」無法讓我的base64字符串在我的JavaScript客戶端解碼
這裏是我的代碼:
(Java服務器代碼):
public void open(Session session)
{
String base64ImageString = generateImageString();
try
{
session.getBasicRemote().sendText(base64ImageString);
}
catch(IOException e)
{
e.printStackTrace();
}
}
private String generateImageString()
{
int imageData[] = new int[2];
imageData[0] = 255;
imageData[1] = 128;
String base64Image = "";
for(int i = 0; i < imageData.length; i++)
{
try
{
base64Image += Base64.encode(Integer.toString(imageData[i]).getBytes("UTF8"));
catch (UnsupportedEncodingException e)
}
catch(UnsupportedEncodingException e)
{
e.printStackTrace();
}
}
return base64Image;
}
(JavaScript代碼):
function onMessage(evt)
{
base64ImageDataString = evt.data;
imageDataString = window.atob(base64ImageDataString);
}
我的base64字符串看起來像在Java和JavaScript側:[[email protected][[email protected]
我使用org.glassfish.jersey.internal.util.Base64如果它事項。我真的難倒:(
是否有可能從int []以字節去[]到一個base64字符串,然後在JavaScript端反向?我沒有意識到我有多遠... – smuggledPancakes 2014-08-27 20:17:56
@smuggledPancakes:是的,這完全有可能 - 但是你需要弄清楚你想如何將int []映射到'byte []',就字節順序而言。 – 2014-08-27 20:18:30