diff --git a/swiftclient/client.py b/swiftclient/client.py
index 01dbaa1e..27664614 100644
--- a/swiftclient/client.py
+++ b/swiftclient/client.py
@@ -97,8 +97,11 @@ def http_log(args, kwargs, resp, body):
 
 def quote(value, safe='/'):
     """
-    Patched version of urllib.quote that encodes utf8 strings before quoting
+    Patched version of urllib.quote that encodes utf8 strings before quoting.
+    On Python 3, call directly urllib.parse.quote().
     """
+    if six.PY3:
+        return _quote(value, safe=safe)
     value = encode_utf8(value)
     if isinstance(value, bytes):
         return _quote(value, safe)
diff --git a/tests/test_swiftclient.py b/tests/test_swiftclient.py
index 80f074c4..f18856d1 100644
--- a/tests/test_swiftclient.py
+++ b/tests/test_swiftclient.py
@@ -182,10 +182,14 @@ class MockHttpResponse():
 class TestHttpHelpers(MockHttpTest):
 
     def test_quote(self):
-        value = 'standard string'
-        self.assertEqual(b'standard%20string', c.quote(value))
-        value = u'\u0075nicode string'
-        self.assertEqual(b'unicode%20string', c.quote(value))
+        value = b'bytes\xff'
+        self.assertEqual('bytes%FF', c.quote(value))
+        value = 'native string'
+        self.assertEqual('native%20string', c.quote(value))
+        value = u'unicode string'
+        self.assertEqual('unicode%20string', c.quote(value))
+        value = u'unicode:\xe9\u20ac'
+        self.assertEqual('unicode%3A%C3%A9%E2%82%AC', c.quote(value))
 
     def test_http_connection(self):
         url = 'http://www.test.com'