là. J'essaye de passer un contenu de champ de texte dans un appel de base de données (mysql). Quand je regarde le champ qui est renvoyé à partir de l'appel Text-> getvalue. (Funct) - je n'ai tout simplement pas le texte qui a été entré dans le champ - via l'une des fonctions UTF dans WXWidgets. J'ai essayé les suivantes:Contrôles Unicode et texte ne pas convertir en UTF8 correctement
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);
La boîte de message est que je suis en train d'afficher ce qui est dans la mémoire tampon wxChar, mais je suis en cours d'exécution dans le débogage je peux simplement regarder pendant la course et confirmer que c'est incorrect. S'il vous plaît noter que j'ai essayé ces lignes de tampon wxChar un à la fois séparément (pas comme ils sont énumérés ici). Je voulais juste montrer des choses que j'avais essayées.
Quelle est la bonne façon de faire cela? Le type de caractères que je tente d'enregistrer dans la base de données ressemble à: "vérifier Todd 1 乞: 乞丐 qǐgài, 乞求 qǐqiú, 乞讨 qǐtǎo."
La sortie gooblygook ressemble à caractères Chineese etc .. même dans la partie anglaise du champ (Check Todd) ...
Toute personne qui a une idée de comment faire s'il vous plaît laissez-moi savoir. Merci ...
Tb
À quoi ressemblent les données brutes de 'wxString' renvoyées par' wxTextCtrl :: GetValue() '? BTW, 'mb_str()' renvoie un 'wxCharBuffer', et' ToUTF8() 'et' utf8_str() 'retournent tous les deux un' wxScopedCharBuffer '. Ils ne renvoient pas 'wxChar', comme votre code l'attend. Et 'wxScopedCharBuffer :: data()' renvoie un 'char *', que vous ne devriez pas passer à '_T ("% s ")', utilisez '_T ("% hs ")' à la place. –
@remy Lebeau - Merci –