Index: django/middleware/common.py
===================================================================
--- django/middleware/common.py	(revision 6022)
+++ django/middleware/common.py	(revision 6554)
@@ -1,8 +1,10 @@
+import md5
+import re
+
 from django.conf import settings
 from django import http
 from django.core.mail import mail_managers
-import md5
-import re
+from django.utils.http import urlquote
 
 class CommonMiddleware(object):
     """
@@ -32,7 +34,7 @@
                     return http.HttpResponseForbidden('<h1>Forbidden</h1>')
 
         # Check for a redirect based on settings.APPEND_SLASH and settings.PREPEND_WWW
-        host = http.get_host(request)
+        host = request.get_host()
         old_url = [host, request.path]
         new_url = old_url[:]
         if settings.PREPEND_WWW and old_url[0] and not old_url[0].startswith('www.'):
@@ -46,9 +48,9 @@
         if new_url != old_url:
             # Redirect
             if new_url[0]:
-                newurl = "%s://%s%s" % (request.is_secure() and 'https' or 'http', new_url[0], new_url[1])
+                newurl = "%s://%s%s" % (request.is_secure() and 'https' or 'http', new_url[0], urlquote(new_url[1]))
             else:
-                newurl = new_url[1]
+                newurl = urlquote(new_url[1])
             if request.GET:
                 newurl += '?' + request.GET.urlencode()
             return http.HttpResponsePermanentRedirect(newurl)
@@ -61,7 +63,7 @@
             if settings.SEND_BROKEN_LINK_EMAILS:
                 # If the referrer was from an internal link or a non-search-engine site,
                 # send a note to the managers.
-                domain = http.get_host(request)
+                domain = request.get_host()
                 referer = request.META.get('HTTP_REFERER', None)
                 is_internal = _is_internal_request(domain, referer)
                 path = request.get_full_path()
