diff --git a/gtk/gtkfilechooserentry.c b/gtk/gtkfilechooserentry.c
index 009d842..86e0d9e 100644
--- a/gtk/gtkfilechooserentry.c
+++ b/gtk/gtkfilechooserentry.c
@@ -557,6 +557,7 @@ find_common_prefix (GtkFileChooserEntry *chooser_entry,
   while (valid)
     {
       gchar *display_name;
+      gchar *normalized_display_name;
       GFile *file;
 
       gtk_tree_model_get (GTK_TREE_MODEL (chooser_entry->completion_store),
@@ -564,18 +565,18 @@ find_common_prefix (GtkFileChooserEntry *chooser_entry,
 			  DISPLAY_NAME_COLUMN, &display_name,
 			  FILE_COLUMN, &file,
 			  -1);
-
-      if (g_str_has_prefix (display_name, parsed_file_part))
+      normalized_display_name = g_utf8_normalize (display_name, -1, G_NORMALIZE_DEFAULT_COMPOSE);
+      if (g_str_has_prefix (normalized_display_name, parsed_file_part))
 	{
 	  if (!*common_prefix_ret)
 	    {
-	      *common_prefix_ret = trim_dir_separator_suffix (display_name);
+	      *common_prefix_ret = trim_dir_separator_suffix (normalized_display_name);
 	      *unique_file_ret = g_object_ref (file);
 	    }
 	  else
 	    {
 	      gchar *p = *common_prefix_ret;
-	      const gchar *q = display_name;
+	      const gchar *q = normalized_display_name;
 
 	      while (*p && *p == *q)
 		{
@@ -593,6 +594,7 @@ find_common_prefix (GtkFileChooserEntry *chooser_entry,
 	    }
 	}
 
+      g_free (normalized_display_name);
       g_free (display_name);
       g_object_unref (file);
       valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (chooser_entry->completion_store), &iter);
@@ -607,22 +609,26 @@ find_common_prefix (GtkFileChooserEntry *chooser_entry,
       while (valid)
 	{
 	  gchar *display_name;
+                      gchar *normalized_display_name;
 	  int len;
 
 	  gtk_tree_model_get (GTK_TREE_MODEL (chooser_entry->completion_store),
 			      &iter,
 			      DISPLAY_NAME_COLUMN, &display_name,
 			      -1);
-	  len = strlen (display_name);
+	  normalized_display_name = g_utf8_normalize (display_name, -1,
+                                                                  G_NORMALIZE_DEFAULT_COMPOSE);
+                      len = strlen (normalized_display_name);
 	  g_assert (len > 0);
 
-	  if (G_IS_DIR_SEPARATOR (display_name[len - 1]))
+	  if (G_IS_DIR_SEPARATOR (normalized_display_name[len - 1]))
 	    len--;
 
-	  if (*unique_file_ret == NULL && strncmp (*common_prefix_ret, display_name, len) == 0)
+	  if (*unique_file_ret == NULL && strncmp (*common_prefix_ret, normalized_display_name, len) == 0)
 	    *is_complete_not_unique_ret = TRUE;
 
 	  g_free (display_name);
+	  g_free (normalized_display_name);
 	  valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (chooser_entry->completion_store), &iter);
 	}
 
