diff -daurp subversion/libsvn_subr/path.orig.c subversion/libsvn_subr/path.c
--- subversion/libsvn_subr/path.orig.c	2013-05-14 00:40:07.000000000 +0200
+++ subversion/libsvn_subr/path.c	2013-06-22 01:58:05.000000000 +0200
@@ -40,6 +40,9 @@
 
 #include "dirent_uri.h"
 
+#if defined(DARWIN)
+#include <CoreFoundation/CoreFoundation.h>
+#endif /* DARWIN */
 
 /* The canonical empty path.  Can this be changed?  Well, change the empty
    test below and the path library will work, not so sure about the fs/wc
@@ -1100,7 +1103,6 @@ svn_path_get_absolute(const char **pabso
 }
 
 
-#if !defined(WIN32) && !defined(DARWIN)
 /** Get APR's internal path encoding. */
 static svn_error_t *
 get_path_encoding(svn_boolean_t *path_is_utf8, apr_pool_t *pool)
@@ -1119,8 +1121,6 @@ get_path_encoding(svn_boolean_t *path_is
   *path_is_utf8 = (encoding_style == APR_FILEPATH_ENCODING_UTF8);
   return SVN_NO_ERROR;
 }
-#endif
-
 
 svn_error_t *
 svn_path_cstring_from_utf8(const char **path_apr,
@@ -1148,18 +1148,38 @@ svn_path_cstring_to_utf8(const char **pa
                          const char *path_apr,
                          apr_pool_t *pool)
 {
-#if !defined(WIN32) && !defined(DARWIN)
+#if defined(DARWIN)
+  /*
+    Special treatment for Mac OS X to support UTF-8 MAC encodings.
+    Convert any decomposed unicode characters into precomposed ones.
+    This will solve the problem that the 'svn status' command sometimes
+    cannot recognize the same file if it contains composed characters,
+    like Umlaut in some European languages.
+  */
+  CFMutableStringRef cfmsr = CFStringCreateMutable(NULL, 0);
+  CFStringAppendCString(cfmsr, path_apr, kCFStringEncodingUTF8);
+  CFStringNormalize(cfmsr, kCFStringNormalizationFormC);
+  CFIndex path_buff_size = 1 + CFStringGetMaximumSizeForEncoding(CFStringGetLength(cfmsr), kCFStringEncodingUTF8);
+  path_apr = apr_palloc(pool, path_buff_size);
+  CFStringGetCString(cfmsr, path_apr, path_buff_size, kCFStringEncodingUTF8);
+  CFRelease(cfmsr);
+  *path_utf8 = path_apr;
+  return SVN_NO_ERROR;
+#else
+  /* Use the default method on any other OS */
+ #if !defined(WIN32)
   svn_boolean_t path_is_utf8;
   SVN_ERR(get_path_encoding(&path_is_utf8, pool));
   if (path_is_utf8)
-#endif
+ #endif
     {
       *path_utf8 = apr_pstrdup(pool, path_apr);
       return SVN_NO_ERROR;
     }
-#if !defined(WIN32) && !defined(DARWIN)
+ #if !defined(WIN32)
   else
     return svn_utf_cstring_to_utf8(path_utf8, path_apr, pool);
+ #endif
 #endif
 }
 
diff -daurp subversion/svn/proplist-cmd.orig.c subversion/svn/proplist-cmd.c
--- subversion/svn/proplist-cmd.orig.c	2013-02-24 19:31:38.000000000 +0100
+++ subversion/svn/proplist-cmd.c	2013-06-22 01:55:34.000000000 +0200
@@ -98,6 +98,11 @@ proplist_receiver_xml(void *baton,
   else
     name_local = path;
 
+#if defined(DARWIN)
+  if (! is_url)
+    SVN_ERR(svn_path_cstring_to_utf8(&name_local, name_local, pool));
+#endif
+
   sb = NULL;
 
 
@@ -137,6 +142,11 @@ proplist_receiver(void *baton,
   else
     name_local = path;
 
+#if defined(DARWIN)
+  if (! is_url)
+    SVN_ERR(svn_path_cstring_to_utf8(&name_local, name_local, pool));
+#endif
+
   if (inherited_props)
     {
       int i;
diff -daurp subversion/svn/status-cmd.orig.c subversion/svn/status-cmd.c
--- subversion/svn/status-cmd.orig.c	2013-03-23 16:44:36.000000000 +0100
+++ subversion/svn/status-cmd.c	2013-06-22 01:51:21.000000000 +0200
@@ -111,6 +111,10 @@ print_start_target_xml(const char *targe
 {
   svn_stringbuf_t *sb = svn_stringbuf_create_empty(pool);
 
+#if defined(DARWIN)
+  SVN_ERR(svn_path_cstring_to_utf8(&target, target, pool));
+#endif
+
   svn_xml_make_open_tag(&sb, pool, svn_xml_normal, "target",
                         "path", target, NULL);
 
