-bool wxConvBrokenFileNames::UseUTF8() const
-{
-#if defined HAVE_LANGINFO_H && defined CODESET
-    char *codeset = nl_langinfo(CODESET);
-    return strcmp(codeset, "UTF-8") == 0;
-#else
-    return false;
-#endif
+    // (1) this variable exists for the sole purpose of specifying the encoding
+    //     of the filenames for GTK+ programs, so use it if it is set
+    wxString encName(wxGetenv(_T("G_FILENAME_ENCODING")));
+    encName.MakeUpper();
+    if ( !encName.empty() && encName != _T("UTF-8") && encName != _T("UTF8") )
+    {
+        m_conv = new wxCSConv(encName);
+    }
+    else // no G_FILENAME_ENCODING
+    {
+        if ( encName.empty() )
+            encName = wxLocale::GetSystemEncodingName().Upper();
+
+        // (2) if a non default locale is set, assume that the user wants his
+        //     filenames in this locale too
+        if ( !encName.empty() && encName != _T("UTF-8") && encName != _T("UTF8") )
+        {
+            wxSetEnv(_T("G_FILENAME_ENCODING"), encName);
+            m_conv = new wxMBConvLibc;
+        }
+        else
+        {
+            // (3) finally use UTF-8 by default
+            m_conv = new wxMBConvUTF8(wxMBConvUTF8::MAP_INVALID_UTF8_TO_OCTAL);
+        }
+    }