Skip to content

Commit bb7568f

Browse files
committed
Restore correct split of urlquoted UTF-8 query strings under Python2.
1 parent da9145c commit bb7568f

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

oauth2/__init__.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import httplib2
3232

3333
from ._compat import PY3
34+
from ._compat import b
3435
from ._compat import parse_qs
3536
from ._compat import quote
3637
from ._compat import STRING_TYPES
@@ -614,10 +615,11 @@ def _split_header(header):
614615
@staticmethod
615616
def _split_url_string(param_str):
616617
"""Turn URL string into parameters."""
617-
#XXX parse_qs is leaving the encoded bytes after un-escaping
618-
#parameters = parse_qs(param_str.encode('utf-8'),
619-
parameters = parse_qs(param_str,
620-
keep_blank_values=True)
618+
if not PY3:
619+
# If passed unicode with quoted UTF8, Python2's parse_qs leaves
620+
# mojibake'd uniocde after unquoting, so encode first.
621+
param_str = b(param_str, 'utf-8')
622+
parameters = parse_qs(param_str, keep_blank_values=True)
621623
for k, v in parameters.items():
622624
parameters[k] = unquote_to_bytes(v[0])
623625
return parameters

0 commit comments

Comments
 (0)