diff --git a/django/core/cache/backends/memcached.py b/django/core/cache/backends/memcached.py index 15f3cc0bf8..c3f20bab8a 100644 --- a/django/core/cache/backends/memcached.py +++ b/django/core/cache/backends/memcached.py @@ -43,15 +43,9 @@ class CacheClass(BaseCache): val = self._cache.get(smart_str(key)) if val is None: return default - else: - if isinstance(val, basestring): - return smart_unicode(val) - else: - return val + return val def set(self, key, value, timeout=0): - if isinstance(value, unicode): - value = value.encode('utf-8') self._cache.set(smart_str(key), value, self._get_memcache_timeout(timeout)) def delete(self, key): diff --git a/tests/regressiontests/cache/tests.py b/tests/regressiontests/cache/tests.py index 3a6c168530..ee10fad664 100644 --- a/tests/regressiontests/cache/tests.py +++ b/tests/regressiontests/cache/tests.py @@ -278,6 +278,16 @@ class BaseCacheTests(object): self.cache.set(key, value) self.assertEqual(self.cache.get(key), value) + def test_binary_string(self): + # Binary strings should be cachable + from zlib import compress, decompress + value = 'value_to_be_compressed' + compressed_value = compress(value) + self.cache.set('binary1', compressed_value) + compressed_result = self.cache.get('binary1') + self.assertEqual(compressed_value, compressed_result) + self.assertEqual(value, decompress(compressed_result)) + def test_long_timeout(self): ''' Using a timeout greater than 30 days makes memcached think