那里。我试图将文本字段内容传递给数据库调用(mysql)。当我查看从Text-> getvalue。(funct)调用返回的字段时 - 我只是不通过WXWidgets中的任何UTF函数获取输入到字段中的文本。我尝试过以下方法:
wxChar buffer = ((wxTextCtrl*)FindWindow(wxID_TITLE))->GetValue().mb_str(wxConvUTF8);
//GooglyGook for whole thing
wxChar buffer = ((wxTextCtrl*)FindWindow(wxID_TITLE))->GetValue().mb_str();
//NULL it fails completely
wxChar buffer = ((wxTextCtrl*)FindWindow(wxID_TITLE))->GetValue().ToUTF8();
//More GOoblygook
wxChar buffer = ((wxTextCtrl*)FindWindow(wxID_TITLE))->GetValue().utf8_str();
//More Gooblygook
message.Printf(_T("The title saved as wxCharBuffer =%s"),buffer.data());
wxMessageBox(message,_("Rivendell"), wxICON_ERROR|wxOK);
消息框是我试图显示wxChar缓冲区中的内容的方式, 但是我在调试中运行,所以我可以在运行期间查看它并确认它是不正确的。请注意,我已经分别尝试过这些wxChar缓冲行(不像这里列出的那样)。只是想展示我尝试过的东西。
这样做的正确方法是什么?我试图在数据库中保存的字符类型如下:“检查托德1乞:乞丐qǐgài,乞求qǐqiú,乞讨qǐtǎo。”
gooblygook输出看起来像Chineese角色等。即使在该领域的英语部分(Check Todd)......
任何想知道如何操作的人请告诉我。感谢...
铽
答案 0 :(得分:1)
我感谢所提供的帮助,在尝试了一些事情后,我找到了答案。 执行此操作的正确方法如下:使用wx_str()将TextCtrl字段放入wxString中。然后通过toUTF8()函数将wxString放入wxCHarBuffer。然后使用wxCHarBuffer的data()函数传递一个char指针。
我的部分问题源于试图通过Visual Studio Debugger和/或wxMessage框显示这些字段中的内容 - 所以有时我的转换是错误的(如前一张海报所述)。 我能够将wxString(s)设置为Unicode字符,并通过mysql调用正确处理(即Call之前会崩溃)。返回的chk_title变量似乎被正确编码为UTF8并进行转义。 感谢。