Use 'encoding' parameter of unquote_plus(), catch errors.

This commit is contained in:
Neil Schemenauer 2016-04-04 17:46:27 +00:00
parent e918906921
commit 77ff7b370d
1 changed files with 9 additions and 4 deletions

View File

@ -98,10 +98,15 @@ def parse_query(qs, charset):
value = ''
else:
name, value = chunk.split('=', 1)
name = urllib.parse.unquote_plus(name)
value = urllib.parse.unquote_plus(value)
name = _decode_string(name, charset)
value = _decode_string(value, charset)
try:
name = urllib.parse.unquote_plus(name, encoding=charset,
errors='strict')
value = urllib.parse.unquote_plus(value, encoding=charset,
errors='strict')
except LookupError:
raise RequestError('unknown charset %r' % charset)
except UnicodeDecodeError:
raise RequestError('invalid %r encoded string' % charset)
_add_field_value(fields, name, value)
return fields