diff --git a/hggit/git_handler.py b/hggit/git_handler.py
index 121401d74d0d2f73885d6cd9abd1ef28d696932c_aGdnaXQvZ2l0X2hhbmRsZXIucHk=..2c32471b56089094af808b259258e8ce63e3b19b_aGdnaXQvZ2l0X2hhbmRsZXIucHk= 100644
--- a/hggit/git_handler.py
+++ b/hggit/git_handler.py
@@ -1727,7 +1727,13 @@
             ua = b'git/20x6 (hg-git ; uses dulwich and hg ; like git-core)'
             config = dul_config.ConfigDict()
             config.set(b'http', b'useragent', ua)
-            return client.HttpGitClient(uri, config=config), uri
+            if pycompat.ispy3:
+                # urllib3.util.url._encode_invalid_chars() converts the path
+                # back to bytes using the utf-8 codec
+                str_uri = uri.decode('utf-8')
+            else:
+                str_uri = uri
+            return client.HttpGitClient(str_uri, config=config), uri
 
         # if its not git or git+ssh, try a local url..
         return client.SubprocessGitClient(), uri