You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Dejan Bosanac (JIRA)" <ji...@apache.org> on 2010/04/06 10:21:09 UTC
[jira] Resolved: (AMQ-2684) Incorrect character encoding/decoding
when using websocket/stomp transport
[ https://issues.apache.org/activemq/browse/AMQ-2684?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dejan Bosanac resolved AMQ-2684.
--------------------------------
Resolution: Fixed
Assignee: Dejan Bosanac
Fixed with svn revision 931047. Thanks.
> 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
> Assignee: Dejan Bosanac
> Fix For: 5.4.0
>
> Attachments: StompFrame.java, StompSocket.java
>
>
> 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
> {noformat}
> 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));
> }
> }
> {noformat}
> and StompFrame.toString() to
> {noformat}
> 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();
> }
> {noformat}
> 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.