wxwidgets 3.0.4 wxString中文问题

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
lzx
In need of some credit
In need of some credit
Posts: 1
Joined: Tue Nov 27, 2018 2:53 pm

wxwidgets 3.0.4 wxString中文问题

Postby lzx » Tue Nov 27, 2018 3:18 pm

最近刚刚学wxwidgets,使用的操作系统是Deepin 15.8,gcc 版本7.3.0,IDE是codeblocks 16.01,wxwidgets 3.0.4,库是unicode、release动态库,实现方式是gtk2与gtk3,编译参数是wx-config --cxxflags与wx-config --libs,cpp文件编码是utf-8。现在遇到了wxString不能使用中文的问题。

官方文档里说再也不需要使用wxT()或者_T()了,从3.0开始默认使用unicode。但是我实际运行的结果却不是这样。

std::string str("中文");

wxString s1("中文");
wxString s2(_("汉字"));
wxString s3(str);
wxString s4(str.c_str());

wxString s5(_T("汉字"));
wxString s6 = wxString::FromUTF8("中文");
wxString s7("汉字",wxConvUTF8);

上面代码的运行结果,str和s5,s6,s7结果是正常的,其它不行。要想让wxString支持中文,最简单的方式还是_T(),文档说已经不需要了,应该是哪里实现出错。

这两天又翻了翻手册,发现wxString有默认的编码方式,可以通过wxLocale::GetSystemEncodingName()获得。理论上讲,当wx的编码方式和源码的编码方式相同时,是可以直接赋值的。我在win10下用tdm-gcc 5.1.0编译unicode版wx3.0.4,wxLocale::GetSystemEncodingName()输出的是window936,所以当源码采用GBK方式时,确实可以直接赋值。当源码采用utf8时,就需要转码了。
然而比较蛋疼的是,当我回到linux,查看wx默认编码,发现是uft8,明明我之前源码用的也是utf8啊,就是不能赋值。后来又编译了ansi版的wx3.0.4,就可以直接赋值。最初使用的版本,就是不能直接赋,真是气死我了。

Return to “wxWidgets Development (Chinese)”

Who is online

Users browsing this forum: No registered users and 7 guests