diff -r 00e4e4b60c7f django/core/cache/backends/memcached.py
--- a/django/core/cache/backends/memcached.py	Sun Aug 17 07:43:34 2008 +0200
+++ b/django/core/cache/backends/memcached.py	Sun Aug 17 19:10:41 2008 +0900
@@ -17,10 +17,10 @@
         self._cache = memcache.Client(server.split(';'))
 
     def add(self, key, value, timeout=0):
-        return self._cache.add(key.encode('ascii', 'ignore'), value, timeout or self.default_timeout)
+        return self._cache.add(smart_str(key.replace(" ", "_")), value, timeout or self.default_timeout)
 
     def get(self, key, default=None):
-        val = self._cache.get(smart_str(key))
+        val = self._cache.get(smart_str(key.replace(" ", "_")))
         if val is None:
             return default
         else:
@@ -32,13 +32,13 @@
     def set(self, key, value, timeout=0):
         if isinstance(value, unicode):
             value = value.encode('utf-8')
-        self._cache.set(smart_str(key), value, timeout or self.default_timeout)
+        self._cache.set(smart_str(key.replace(" ", "_")), value, timeout or self.default_timeout)
 
     def delete(self, key):
-        self._cache.delete(smart_str(key))
+        self._cache.delete(smart_str(key.replace(" ", "_")))
 
     def get_many(self, keys):
-        return self._cache.get_multi(map(smart_str,keys))
+        return self._cache.get_multi([smart_str(k.replace(" ", "_")) for k in keys])
 
     def close(self, **kwargs):
         self._cache.disconnect_all()
