--- django/http/__init__.py	(revision 3065)
+++ django/http/__init__.py	(working copy)
@@ -1,8 +1,10 @@
 from Cookie import SimpleCookie
 from pprint import pformat
-from urllib import urlencode
+from urllib import urlencode, quote
 from django.utils.datastructures import MultiValueDict
 
+RESERVED_CHARS="!*'();:@&=+$,/?%#[]"
+
 try:
     # The mod_python version is more efficient, so try importing it first.
     from mod_python.util import parse_qsl
@@ -241,13 +243,13 @@
 class HttpResponseRedirect(HttpResponse):
     def __init__(self, redirect_to):
         HttpResponse.__init__(self)
-        self['Location'] = redirect_to
+        self['Location'] = quote(redirect_to, safe=RESERVED_CHARS)
         self.status_code = 302
 
 class HttpResponsePermanentRedirect(HttpResponse):
     def __init__(self, redirect_to):
         HttpResponse.__init__(self)
-        self['Location'] = redirect_to
+        self['Location'] = quote(redirect_to, safe=RESERVED_CHARS)
         self.status_code = 301
 
 class HttpResponseNotModified(HttpResponse):
