diff -ru gnome-commander/src/gnome-cmd-data.cc gnome-commander-548947/src/gnome-cmd-data.cc
--- gnome-commander/src/gnome-cmd-data.cc	2008-09-07 00:55:10.000000000 +0200
+++ gnome-commander-548947/src/gnome-cmd-data.cc	2008-09-08 12:18:13.121790100 +0200
@@ -51,7 +51,7 @@
     GList                *fav_apps;
     GnomeCmdSizeDispMode size_disp_mode;
     GnomeCmdPermDispMode perm_disp_mode;
-    GnomeCmdDateFormat   date_format;
+    GnomeCmdDateFormat   date_format;           // NOTE: internally stored as locale (which not always defaults to UTF8), needs converting from/to UTF8 for editing and cfg load/save
     GnomeCmdLayout       layout;
     GnomeCmdColorTheme   color_themes[GNOME_CMD_NUM_COLOR_MODES];
     GnomeCmdColorMode    color_mode;
@@ -1166,7 +1166,11 @@
 
     gnome_cmd_data_set_int    ("/options/size_disp_mode", gnome_cmd_data.priv->size_disp_mode);
     gnome_cmd_data_set_int    ("/options/perm_disp_mode", gnome_cmd_data.priv->perm_disp_mode);
-    gnome_cmd_data_set_string ("/options/date_disp_mode", gnome_cmd_data.priv->date_format);
+
+    gchar *utf8_date_format = g_locale_to_utf8 (gnome_cmd_data.priv->date_format, -1, NULL, NULL, NULL);
+    gnome_cmd_data_set_string ("/options/date_disp_mode", utf8_date_format);
+    g_free (utf8_date_format);
+
     gnome_cmd_data_set_int    ("/options/layout", gnome_cmd_data.priv->layout);
     gnome_cmd_data_set_int    ("/options/list_row_height", gnome_cmd_data.priv->list_row_height);
 
@@ -1349,11 +1353,14 @@
     gnome_cmd_data.priv->size_disp_mode = (GnomeCmdSizeDispMode) gnome_cmd_data_get_int ("/options/size_disp_mode", GNOME_CMD_SIZE_DISP_MODE_POWERED);
     gnome_cmd_data.priv->perm_disp_mode = (GnomeCmdPermDispMode) gnome_cmd_data_get_int ("/options/perm_disp_mode", GNOME_CMD_PERM_DISP_MODE_TEXT);
 
+    gchar *utf8_date_format = gnome_cmd_data_get_string ("/options/date_disp_mode", 
 #ifdef HAVE_LOCALE_H
-    gnome_cmd_data.priv->date_format = gnome_cmd_data_get_string ("/options/date_disp_mode", "%x %R");
+                                                         "%x %R");
 #else
-    gnome_cmd_data.priv->date_format = gnome_cmd_data_get_string ("/options/date_disp_mode", "%D %R");
+                                                         "%D %R");
 #endif
+    gnome_cmd_data.priv->date_format = g_locale_from_utf8 (utf8_date_format, -1, NULL, NULL, NULL);
+    g_free (utf8_date_format);
 
     gnome_cmd_data.priv->layout = (GnomeCmdLayout) gnome_cmd_data_get_int ("/options/layout", GNOME_CMD_LAYOUT_MIME_ICONS);
 
diff -ru gnome-commander/src/gnome-cmd-options-dialog.cc gnome-commander-548947/src/gnome-cmd-options-dialog.cc
--- gnome-commander/src/gnome-cmd-options-dialog.cc	2008-09-07 00:55:10.000000000 +0200
+++ gnome-commander-548947/src/gnome-cmd-options-dialog.cc	2008-09-08 12:15:33.374570100 +0200
@@ -247,8 +247,9 @@
     label = create_label (parent, _("Format:"));
     table_add (table, label, 0, 0, GTK_FILL);
 
-    entry = create_entry (parent, "date_format_entry", gnome_cmd_data_get_date_format());
-    gtk_entry_set_text (GTK_ENTRY (entry), gnome_cmd_data_get_date_format ());
+    gchar *utf8_date_format = g_locale_to_utf8 (gnome_cmd_data_get_date_format(), -1, NULL, NULL, NULL);
+    entry = create_entry (parent, "date_format_entry", utf8_date_format);
+    g_free (utf8_date_format);
     gtk_widget_grab_focus (entry);
     table_add (table, entry, 1, 0, GTK_FILL);
 
@@ -295,7 +296,7 @@
     else
         gnome_cmd_data_set_perm_disp_mode (GNOME_CMD_PERM_DISP_MODE_NUMBER);
 
-    gnome_cmd_data_set_date_format (g_strdup (format));
+    gnome_cmd_data_set_date_format (g_locale_from_utf8 (format, -1, NULL, NULL, NULL));
 }
 
 
diff -ru gnome-commander/src/utils.cc gnome-commander-548947/src/utils.cc
--- gnome-commander/src/utils.cc	2008-09-07 00:55:10.000000000 +0200
+++ gnome-commander-548947/src/utils.cc	2008-09-08 12:19:37.596432500 +0200
@@ -420,12 +420,21 @@
 
 const gchar *time2string (time_t t, const gchar *date_format)
 {
+    // NOTE: date_format is passed in current locale format
+
     static gchar buf[64];
     struct tm lt;
 
     localtime_r (&t, &lt);
     strftime (buf, sizeof(buf), date_format, &lt);
 
+    // Convert formatted date from current locale to UTF8
+    gchar *loc_date = g_locale_to_utf8 (buf, -1, NULL, NULL, NULL);
+    if (loc_date)
+        strncpy (buf, loc_date, sizeof(buf)-1);
+
+    g_free (loc_date);
+
     return buf;
 }
 
