DOS-кодировка это какая? cp866?
Я бы делал так:
Code: Select all
#include <wx/wx.h>
#include <wx/file.h>
class MyFrame : public wxFrame
{
public:
MyFrame() : wxFrame(NULL, wxID_ANY, "Test", wxDefaultPosition, wxSize(600, 400))
{
wxBoxSizer* Sizer = new wxBoxSizer( wxVERTICAL );
m_BTest = new wxButton( this, wxID_ANY, wxT("Test"), wxDefaultPosition, wxDefaultSize, 0 );
m_BTest->Bind(wxEVT_BUTTON, [&](wxCommandEvent&)
{
wxString text;
wxCSConv conv( wxT( "cp866" ) );
if (!conv.IsOk())
{
wxMessageBox("Не узнаю кодировку \n");
return;
}
wxFileDialog* fileDialog = new wxFileDialog(this);
if (fileDialog->ShowModal() == wxID_OK)
{
wxFile file(fileDialog->GetPath(),wxFile::OpenMode::read);
if(file.IsOpened())
{
file.ReadAll(&text,conv);
wxMessageBox(text);
}
else
{
wxMessageBox("Не могу открыть файл \n");
}
}
fileDialog->Destroy();
});
Sizer->Add( m_BTest, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 );
this->SetSizer( Sizer );
this->Layout();
this->Centre( wxBOTH );
}
protected:
wxButton* m_BTest;
};
class MyApp : public wxApp
{
public:
bool OnInit()
{
(new MyFrame)->Show();
return true;
}
};
wxIMPLEMENT_APP(MyApp);
а при записи в файл конвертировал уже как UTF8: