Just to follow on the off chance that someone as stupid as myself might be facing a similar issue in the future. As you implied in in your first response, using GPB Text Format on the producing side ( which amounts to calling toString() ) and a C++ TextFormat on the consuming side will indeed work. This code writes, and reads corresponding GPB text representations repectively.
1) To illustrate with a code snippet (Java producer) TextMessage tm = session.createTextMessage(); //JMS tm.setText(person.toString()); //person is a GPB 2) On the consuming side ( in C++ ) TextFormat:parseFromString(dataString, &person); Where "dataString" is the TextMessage payload, successfully creates a c ++ person. Simplest thing should have heen tried first. Thanks On Oct 6, 2:28 pm, Jason Hsueh <jas...@google.com> wrote: > On Thu, Oct 6, 2011 at 11:17 AM, Jerry <gerald.d....@gmail.com> wrote: > > Thanks for the quick response Jason. Just to be clear, are you saying > > that I will not be able to send a String representation from Java to C+ > > + and expect it to work. > > AFAIK, String coerces text into UTF (I am not a Java guy) so no, you cannot > do this. You'd need to use the raw byte array from the ByteString. The > String may be an invalid protobuf encoding, meaning it will fail for any > protobuf decoder. Java to Java will not work either - the UTF conversion is > lossy so the other side cannot recover the original protobuf encoding. > > > > > > > In term of the sending code: > > ------- > > String text = person.toByteString().toStringUtf8(); > > //or toString(charsetName) > > TextMessage tm = session.createTextMessage(); > > tm.setText (text); > > //send > > ------ > > > 1) Once received the text payload will NOT be able to be used to > > create a Person on the C++ side using Message::ParseFromString() ? > > Or is it just that the above code is inncorrect? Could I use a > > different charset? > > > 2) However, the above code would work to send GPBs from Java to Java > > as String representations over JMS for example, correct? > > > On Oct 6, 1:03 pm, Jason Hsueh <jas...@google.com> wrote: > > > On Thu, Oct 6, 2011 at 9:49 AM, Jerry <gerald.d....@gmail.com> wrote: > > > > Simple ( hopefully ) question. I am sending a protocol buffer message > > > > from windows over EMS to a C++ process that is running on linux. The > > > > text payload is generated as follows on my windows system: > > > > > person.toByteString().toStringUtf8(). > > > > Serialized protos are not valid UTF8, and you should never operate on > > them > > > as Java String objects. You'll get data corruption on the other side, > > making > > > it unparsable. > > > > > When the c++ side attempts to reanimate my person with the following > > > > code: > > > > > google:protobuf::TextFormat:parseFromString(dataString, &person); > > > > You used the binary format above, but are using the text format here. You > > > should be using Message::ParseFromString() or a similar variant; > > TextFormat > > > should be paired with the Java TextFormat class. > > > > > The following error is produced: > > > > > "Invalid control characters encountered in text" > > > > > Any help would be greatly appreciated. > > > > > Also, for reasons that are beside the point I am unable to send a > > > > bytes[] between processes at this time. > > > > > Thanks > > > > -Jerry > > > > > -- > > > > You received this message because you are subscribed to the Google > > Groups > > > > "Protocol Buffers" group. > > > > To post to this group, send email to protobuf@googlegroups.com. > > > > To unsubscribe from this group, send email to > > > > protobuf+unsubscr...@googlegroups.com. > > > > For more options, visit this group at > > > >http://groups.google.com/group/protobuf?hl=en.-Hide quoted text - > > > > - Show quoted text - > > > -- > > You received this message because you are subscribed to the Google Groups > > "Protocol Buffers" group. > > To post to this group, send email to protobuf@googlegroups.com. > > To unsubscribe from this group, send email to > > protobuf+unsubscr...@googlegroups.com. > > For more options, visit this group at > >http://groups.google.com/group/protobuf?hl=en.- Hide quoted text - > > - Show quoted text - -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to protobuf@googlegroups.com. To unsubscribe from this group, send email to protobuf+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/protobuf?hl=en.