Although I'm interested to hear the possible solutions
to my problem below, I just wanted to note that I received
a message from another mailing list (mozilla-embedding@mozilla.org)
explaining how to convert from UTF-16 to UTF-8 using
the Mozilla string API, and that worked. Thanks.

On Sun, 3 Apr 2005, Scott Lanning wrote:
I'm wrapping a method that returns UTF-16 strings.
My understanding is that these should be converted
to UTF-8 before returning them, but I'm not sure
how that should be done. I don't really have much
of an understanding of Unicode, nor really of XS.

If it helps, what I have so far is (this is a method
for Mozilla's nsIDOMEvent GetType method, and PRUnichar
is a 16-bit character):

## GetType(nsAString & aType)
const char *
moz_dom_get_type (event)
nsIDOMEvent *event;
PREINIT:
nsEmbedString u16container; /* nsEmbedString implements nsAString */
const PRUnichar *u16str;
const char *u8str;
CODE:
event->GetType(u16container); /* pass by reference */
u16str = u16container.get();


        /* convert from utf-16 to utf-8 */
        u8str = ...?

       RETVAL = u8str;
   OUTPUT:
       RETVAL

I think that Encode can be used to go from UTF-16 to UTF-8,
but I don't see any typemap that handles UTF-16. (I'm not sure
if that statement makes sense.)

Reply via email to