urldecoding should always be done in bytes
This commit is contained in:
@@ -58,21 +58,21 @@ MUTED_SOCKET_ERRORS = [
|
|||||||
|
|
||||||
|
|
||||||
def urldecode(s):
|
def urldecode(s):
|
||||||
if isinstance(s, bytes):
|
if isinstance(s, str):
|
||||||
s = s.decode()
|
s = s.encode()
|
||||||
s = s.replace('+', ' ')
|
s = s.replace(b'+', b' ')
|
||||||
parts = s.split('%')
|
parts = s.split(b'%')
|
||||||
if len(parts) == 1:
|
if len(parts) == 1:
|
||||||
return s
|
return s.decode()
|
||||||
result = [parts[0]]
|
result = [parts[0]]
|
||||||
for item in parts[1:]:
|
for item in parts[1:]:
|
||||||
if item == '':
|
if item == b'':
|
||||||
result.append('%')
|
result.append(b'%')
|
||||||
else:
|
else:
|
||||||
code = item[:2]
|
code = item[:2]
|
||||||
result.append(chr(int(code, 16)))
|
result.append(bytes([int(code, 16)]))
|
||||||
result.append(item[2:])
|
result.append(item[2:])
|
||||||
return ''.join(result)
|
return b''.join(result).decode()
|
||||||
|
|
||||||
|
|
||||||
def urlencode(s):
|
def urlencode(s):
|
||||||
|
|||||||
Reference in New Issue
Block a user