Index: django/utils/encoding.py
===================================================================
--- django/utils/encoding.py	(Revision 7291)
+++ django/utils/encoding.py	(Arbeitskopie)
@@ -49,6 +49,14 @@
         if not isinstance(s, basestring,):
             if hasattr(s, '__unicode__'):
                 s = unicode(s)
+            elif isinstance(s, Exception): 
+                try:
+                    s = unicode(s)
+                except UnicodeError:
+                    if errors == 'replace':
+                        s = ' '.join([force_unicode(arg, encoding, strings_only, errors) for arg in s.args])
+                    else:
+                        raise
             else:
                 s = unicode(str(s), encoding, errors)
         elif not isinstance(s, unicode):
Index: django/views/debug.py
===================================================================
--- django/views/debug.py	(Revision 7291)
+++ django/views/debug.py	(Arbeitskopie)
@@ -177,7 +177,7 @@
         'root_urlconf': settings.ROOT_URLCONF,
         'request_path': request.path[1:], # Trim leading slash
         'urlpatterns': tried,
-        'reason': str(exception),
+        'reason': smart_unicode(exception, errors='replace'),
         'request': request,
         'request_protocol': request.is_secure() and "https" or "http",
         'settings': get_safe_settings(),
