Incorrect character encoding/decoding when using websocket/stomp transport
--------------------------------------------------------------------------
Key: AMQ-2684
URL: https://issues.apache.org/activemq/browse/AMQ-2684
Project: ActiveMQ
Issue Type: Bug
Components: Transport
Affects Versions: 5.4.0
Environment: Windows 7 64bit
Java 1.6.0_18
Reporter: Achim Gmeiner
Fix For: 5.4.0
Non ANSI-characters sent over the websocket/stomp transport are not
encoded/decoded correctly. In my case client and server are using UTF-8 for
character encoding.
Changing StompSocket.onMessage(byte frame, String data) to
public void onMessage(byte frame, String data) {
try {
protocolConverter.onStompCommand((StompFrame)wireFormat.unmarshal(new
ByteSequence(data.getBytes("UTF-8"))));
} catch (Exception e) {
onException(IOExceptionSupport.create(e));
}
}
and StompFrame.toString() to
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append(getAction());
buffer.append("\n");
Map headers = getHeaders();
for (Iterator iter = headers.entrySet().iterator(); iter.hasNext();) {
Map.Entry entry = (Map.Entry)iter.next();
buffer.append(entry.getKey());
buffer.append(":");
buffer.append(entry.getValue());
buffer.append("\n");
}
buffer.append("\n");
if (getContent() != null) {
try {
buffer.append(new String(getContent(), "UTF-8"));
} catch (Throwable e) {
buffer.append(Arrays.toString(getContent()));
}
}
return buffer.toString();
}
solved the problem for me. The changes are minor, I only specified the encoding
when reading bytes arrays.
Maybe there should be a way to configure the encoding to be used...
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.