diff --git a/glib/glib.symbols b/glib/glib.symbols
index 9d0c2a1..a936b19 100644
--- a/glib/glib.symbols
+++ b/glib/glib.symbols
@@ -1599,6 +1599,7 @@ g_get_user_name PRIVATE
 #ifdef G_OS_WIN32
 g_get_user_name_utf8
 #endif
+g_get_user_name_for_display
 glib_check_version
 g_nullify_pointer
 g_parse_debug_string
diff --git a/glib/gutils.c b/glib/gutils.c
index 744663e..4d68965 100644
--- a/glib/gutils.c
+++ b/glib/gutils.c
@@ -1795,6 +1795,8 @@ g_get_any_init_locked (void)
  * string is system-defined. On UNIX, it might be the preferred file name
  * encoding, or something else, and there is no guarantee that it is even
  * consistent on a machine. On Windows, it is always UTF-8.
+ * Use g_get_user_name_for_display() if you need to display the name
+ * in a user interface.
  *
  * Returns: the user name of the current user.
  */
@@ -1806,6 +1808,30 @@ g_get_user_name (void)
 }
 
 /**
+ * g_get_user_name_for_display:
+ *
+ * Gets the user name of the current user as a UTF-8 encoded string
+ * for display in a user interface.
+ *
+ * Returns: a newly allocated string, containing the name of the current user
+ *
+ * Since: 2.24
+ */
+gchar*
+g_get_user_name_for_display (void)
+{
+  #ifdef G_OS_WIN32
+  g_get_any_init_locked ();
+  return g_strdup (g_user_name);
+  #else
+  gchar *user_name_utf8;
+  g_get_any_init_locked ();
+  user_name_utf8 = g_locale_to_utf8 (g_user_name, -1, NULL, NULL, NULL);
+  return user_name_utf8;
+  #endif
+}
+
+/**
  * g_get_real_name:
  *
  * Gets the real name of the user. This usually comes from the user's entry 
diff --git a/glib/gutils.h b/glib/gutils.h
index bb4da80..8c366f5 100644
--- a/glib/gutils.h
+++ b/glib/gutils.h
@@ -118,6 +118,7 @@ G_BEGIN_DECLS
 #endif
 
 G_CONST_RETURN gchar* g_get_user_name        (void);
+               gchar* g_get_user_name_for_display (void);
 G_CONST_RETURN gchar* g_get_real_name        (void);
 G_CONST_RETURN gchar* g_get_home_dir         (void);
 G_CONST_RETURN gchar* g_get_tmp_dir          (void);
