CORBA codeset question
Hi, We've got an application here where we need to send Unicode text over a CORBA interface served from Lispworks. Here are the things we've tried: * Using narrow strings: The remote side (Java in this case) encodes the strings into Latin-1, and Lispworks interprets them as such. If Java tries to write a code point over 255, it gets an exception on the Java side. * Using wide strings: Doesn't work at all. Java gets this exception: [java] WARNING: "IOP00500001: (INV_OBJREF) wchar Code Set support not specified" [java] org.omg.CORBA.INV_OBJREF: vmcid: OMG minor code: 1 completed: No [java] at com.sun.corba.se.impl.logging.OMGSystemException.noServerWcharCodesetCmp(OMGSystemException.java:2217) [java] at com.sun.corba.se.impl.logging.OMGSystemException.noServerWcharCodesetCmp(OMGSystemException.java:2239) [java] at com.sun.corba.se.impl.encoding.CDROutputObject.createWCharCTBConverter(CDROutputObject.java:248) [java] at com.sun.corba.se.impl.encoding.CDROutputStream_1_0.getWCharConverter(CDROutputStream_1_0.java:1800) [java] at com.sun.corba.se.impl.encoding.CDROutputStream_1_1.write_wstring(CDROutputStream_1_1.java:122) [java] at com.sun.corba.se.impl.encoding.CDROutputStream.write_wstring(CDROutputStream.java:156) It's my (possibly false) understanding that the CORBA server side is supposed to tell the client what external format to use to communicate with it. Given the error from the wide string example and an examination of the IOP network traffic, I'd say that's likely. Now, I found some likely stuff with apropos that hints that the Lispworks ORB should support different character sets: CL-USER> (apropos "CODESET") [selected results] CORBA::*WCHAR-CODESET* -- value: #<CORBA Codeset: UTF-16> CORBA::*STANDARD-CODESET-PACKET* -- value: (#<CORBA Codeset: UTF-8> . #<CORBA Codeset: UTF-16>) ORBA::*CHAR-CODESET* -- value: #<CORBA Codeset: UTF-8> [lots of other results that look like codeset internal snipped] However it doesn't appear that it ever tells the other side that it wants UCS-2 for the wchar external format, given the Java exception above. To try to convince it to talk UTF-8 with narrow chars, I tried inserting the following before op:orb_init: (setf corba::*char-codeset* (make-instance 'corba::utf-8) (car corba::*standard-codeset-packet*) corba::*char-codeset*) This also didn't change anything. I've (obviously) not found anything in the documentation about this. Is there a way to work around these problems, or am I out of luck? -bcd -- *** Brian Downing <bdowning at lavos dot net>