diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py
index ed63147..2106d8c 100644
--- a/Lib/test/test_weakref.py
+++ b/Lib/test/test_weakref.py
@@ -188,6 +188,17 @@
         self.assertEqual(L3[:5], p3[:5])
         self.assertEqual(L3[2:5], p3[2:5])
 
+    def test_proxy_unicode(self):
+        # See bug 5037
+        class C(object):
+            def __str__(self):
+                return "string"
+            def __unicode__(self):
+                return u"unicode"
+        instance = C()
+        self.assertTrue("__unicode__" in dir(weakref.proxy(instance)))
+        self.assertEqual(unicode(weakref.proxy(instance)), u"unicode")
+
     def test_proxy_index(self):
         class C:
             def __index__(self):
diff --git a/Misc/NEWS b/Misc/NEWS
index d0ed47c..e1841e8 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -440,6 +440,9 @@
 Library
 -------
 
+- Issue #5037: Proxy the __unicode__ special method instead to __unicode__
+  instead of __str__.
+
 - Issue #7341: Close the internal file object in the TarFile constructor in
   case of an error.
 
diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c
index 9cdd021..1a998b6 100644
--- a/Objects/weakrefobject.c
+++ b/Objects/weakrefobject.c
@@ -433,6 +433,13 @@
         return generic(proxy, v, w); \
     }
 
+#define WRAP_METHOD(method, special) \
+    static PyObject * \
+    method(PyObject *proxy) { \
+	    UNWRAP(proxy); \
+		return PyObject_CallMethod(proxy, special, ""); \
+	}
+
 
 /* direct slots */
 
@@ -593,6 +600,15 @@
 }
 
 
+WRAP_METHOD(proxy_unicode, "__unicode__");
+
+
+static PyMethodDef proxy_methods[] = {
+	{"__unicode__", (PyCFunction)proxy_unicode, METH_NOARGS},
+	{NULL, NULL}
+};
+
+
 static PyNumberMethods proxy_as_number = {
     proxy_add,              /*nb_add*/
     proxy_sub,              /*nb_subtract*/
@@ -684,6 +700,7 @@
     0,                                  /* tp_weaklistoffset */
     (getiterfunc)proxy_iter,            /* tp_iter */
     (iternextfunc)proxy_iternext,       /* tp_iternext */
+	proxy_methods,                      /* tp_methods */
 };
 
 
