[prev in list] [next in list] [prev in thread] [next in thread] 

List:       activemq-dev
Subject:    RE: ActiveMQcpp cms::Session::createTextMessage() function usage
From:       Timothy Bish <tabish121 () gmail ! com>
Date:       2009-08-31 22:41:57
Message-ID: 1251758517.25298.42.camel () localhost
[Download RAW message or body]

On Mon, 2009-08-31 at 08:52 -0700, rainy3 wrote:
> Hello,
> 
> I just need more clarification on this case. Assume that i have a ActiveMQ
> broker, java producer and c++ consumer for text messages. Producer read some
> text from database for example in ISO-8859-1 charset. Then it creates text
> message (conversion to UTF-8) and send it to broker. Then, finally, consumer
> won't be able to read this text messages because backward conversion (C++
> client) allows only ASCII chars, right?

When the String value in the TextMessage (Java Strings are in UTF-16) is
written on the wire its converted to a modified UTF-8 representation.
The C++ expects all the string values it reads from the Broker to be in
this representation, so it knows how to read and convert the UTF-8
values back to single byte char values.  The CMS API doesn't currently
have methods for dealing with multibyte C++ strings so strings are
expected to be encoded with values from 0-255.   For ISO-8859-1 that
should be ok since as I recall that defines values from 0-191 so your
strings should be read fine.

Of course the C++ string you get out is going to be composed of a char*
array which is a signed byte, but you can always cast it to an unsigned
char* and use the full range 0-255 as you please.

Does that help?

Regards
Tim.


-- 
Tim Bish
http://fusesource.com
http://timbish.blogspot.com/



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic