Sorry, I'm not so accustomed to unix environment. On Windows wchar_t is 16
bits.

To convert UTF-32 to UTF-8 use g_ucs4_to_utf8() function[1].

References:
http://library.gnome.org/devel/glib/stable/glib-Unicode-Manipulation.html#g-ucs4-to-utf8

2009/4/28 陈凯 <[email protected]>

> It is much more complicated than I thought since I am new to the topic of
> character encoding of a string.
>
> For Fabrício's suggestion.  Say thank you for your advice first.  I add one
> statement to print the ustring after the conversion to the console.
>
>         std::cout << myustr << std::endl;
>
> The result just got an 'a'.  Maybe it is the wrong way to verify the
> converted glib::ustring, I'm still unsure.  For one question, why is
> g_utf16_to_utf8 here?  A sizeof test with wchar_t show wide character
> (usually) takes 32 bits wide in Unix-like system.  I guess g_utf32_to_utf8
> should work but that function doesn't seem to be declared :(
>
>
> 2009/4/28 Fabrício Godoy <[email protected]>
>
> I don't think that Glib::convert can convert (or convert well) wstrings.
>> My sugestion:
>>
>> // #include <glib.h>
>> std::wstring mywstr(L"any text");
>> gchar* pt_ustr = g_utf16_to_utf8((gunichar2*)mywstr.c_str(), -1, NULL,
>> NULL, NULL);
>> Glib::ustring myustr(pt_ustr);
>> g_free(pt_ustr);
>>
>> References:
>> 1-
>> http://library.gnome.org/devel/glib/stable/glib-Unicode-Manipulation.html#g-utf16-to-utf8
>>
>> 2009/4/28 Milosz Derezynski <[email protected]>
>>
>>> It's not really about the data type used, but about the encoding of the
>>> original string.
>>>
>>> For one, there is http://www.unicode.org/Public/PROGRAMS/CVTUTF/, which
>>> is of course not part of glib, but is probably a good way to do it.
>>>
>>> Then, you can use
>>> http://gtkmm.org/docs/glibmm-2.4/docs/reference/html/group__CharsetConv.html#g58f7e4556c436a96c64b186bbc8f7f4c,
>>>  for converting between UTF-16 (which is what I assume your wstrings are),
>>> and UTF-8.
>>>
>>> Then finally you can place the result into a Glib::ustring.
>>>
>>> Hope this helps,
>>>
>>> M.
>>>
>>> On Tue, Apr 28, 2009 at 12:39 PM, 陈凯 <[email protected]> wrote:
>>>
>>>> Greetings,
>>>>
>>>> Recently I plan to port my app from Windows to linux using Gtkmm
>>>> library.  I found glib::ustring is recommended to use, but my app works 
>>>> with
>>>> std::wstring.  However, there seems no sign of documentations about the
>>>> conversion from std::wstring to glib::string in the gtkmm library.  I got
>>>> stuck here.  Could some one help me out of the question?  Thanks in advance
>>>> :)
>>>>
>>>> Regards
>>>>
>>>> CHEN Kai
>>>>
>>>>
>>>> _______________________________________________
>>>> gtkmm-list mailing list
>>>> [email protected]
>>>> http://mail.gnome.org/mailman/listinfo/gtkmm-list
>>>>
>>>>
>>>
>>>
>>> --
>>> Please note that according to the German law on data retention,
>>> information on every electronic information exchange with me is
>>> retained for a period of six months.
>>> [Bitte beachten Sie, dass dem Gesetz zur Vorratsdatenspeicherung zufolge
>>> jeder elektronische Kontakt mit mir sechs Monate lang gespeichert wird.]
>>>
>>> _______________________________________________
>>> gtkmm-list mailing list
>>> [email protected]
>>> http://mail.gnome.org/mailman/listinfo/gtkmm-list
>>>
>>>
>>
>
_______________________________________________
gtkmm-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to