Index: frm/frmConfig.cpp
===================================================================
--- frm/frmConfig.cpp	(revision 4954)
+++ frm/frmConfig.cpp	(working copy)
@@ -301,20 +301,17 @@
 
 void frmConfig::OpenLastFile()
 {
-    wxFile file(lastPath, wxFile::read);
+    wxUtfFile file(lastPath, wxFile::read, wxFONTENCODING_DEFAULT);
     if (file.IsOpened())
     {
-#ifdef __WXMSW__
-        _setmode(file.fd(), _O_BINARY);
-#endif
-        char *buffer=new char[file.Length()+1];
-        int cnt=file.Read(buffer,file.Length());
-        buffer[cnt] = 0;
+        encoding = file.GetEncoding();
+
+        wxString buffer;
+        int cnt=file.Read(buffer);
         file.Close();
 
-        DisplayFile(wxString(buffer, wxConvLibc));
+        DisplayFile(wxString(buffer));
 
-        delete buffer;
         statusBar->SetStatusText(wxString::Format(_(" Configuration read from %s"), lastPath.c_str()));
 
         fileMenu->Enable(MNU_SAVE, false);
@@ -373,7 +370,7 @@
     }
     else
     {
-        wxFile file(lastPath, wxFile::write);
+        wxUtfFile file(lastPath, wxFile::write, encoding);
         if (file.IsOpened())
         {
             file.Write(str);
Index: include/frmConfig.h
===================================================================
--- include/frmConfig.h	(revision 4954)
+++ include/frmConfig.h	(working copy)
@@ -65,6 +65,8 @@
     bool CheckChanged(bool canVeto);
     void DisplayHint(bool force);
 
+    wxFontEncoding encoding;
+
 protected:
     pgConn *conn;
     frmMain *mainForm;
