diff -urN subversion-1.7.3.orig/subversion/libsvn_subr/path.c subversion-1.7.3/subversion/libsvn_subr/path.c
--- subversion-1.7.3.orig/subversion/libsvn_subr/path.c	2012-03-10 16:17:55.000000000 +0900
+++ subversion-1.7.3/subversion/libsvn_subr/path.c	2012-03-10 16:18:44.000000000 +0900
@@ -38,6 +38,11 @@
 #include "svn_io.h"                     /* for svn_io_stat() */
 #include "svn_ctype.h"
 
+ #if defined(DARWIN)
+ #include <CoreFoundation/CoreFoundation.h>
+ #endif /* DARWIN */
+
+
 #include "dirent_uri.h"
 
 
@@ -1120,6 +1125,34 @@
                          apr_pool_t *pool)
 {
   svn_boolean_t path_is_utf8;
+
+ #if defined(DARWIN)
+   svn_error_t *err;
+
+   CFMutableStringRef cfmsr = CFStringCreateMutable(NULL, 0);
+   CFStringAppendCString(cfmsr, path_apr, kCFStringEncodingUTF8);
+   CFStringNormalize(cfmsr, kCFStringNormalizationFormC);
+   CFIndex path_buff_size = 1 + CFStringGetMaximumSizeForEncoding(
+     CFStringGetLength(cfmsr), kCFStringEncodingUTF8);
+   char *path = apr_palloc(pool, path_buff_size);
+   CFStringGetCString(cfmsr, path, path_buff_size, kCFStringEncodingUTF8);
+
+  SVN_ERR(get_path_encoding(&path_is_utf8, pool));
+ 
+   if (path_is_utf8)
+     {
+       *path_utf8 = apr_pstrdup(pool, path);
+       err = SVN_NO_ERROR;
+     }
+   else
+     err = svn_utf_cstring_to_utf8(path_utf8, path, pool);
+
+   CFRelease(cfmsr);
+
+   return err;
+
+#else
+
   SVN_ERR(get_path_encoding(&path_is_utf8, pool));
   if (path_is_utf8)
     {
@@ -1128,6 +1161,8 @@
     }
   else
     return svn_utf_cstring_to_utf8(path_utf8, path_apr, pool);
+
+#endif
 }
 
 
