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
