最近在使用Tornado的UIModule时遇到一个问题,就是内置的类中不提供解析相关中文参数
%E5%AF%86
的方法,我在网上查了一下,解决方法居然需要使用requests的第三方库,于是我查了一下RequestHandler中想对应的方法get query argument()方法,发现了在parse.py 中有一段这样的代码:
global _hextobyte
if _hextobyte is None:
_hextobyte = {(a + b).encode(): bytes([int(a + b, 16)])
for a in _hexdig for b in _hexdig}
for item in bits[1:]:
try:
append(_hextobyte[item[:2]])
append(item[2:])
except KeyError:
append(b'%')
append(item)
return b''.join(res)
于是我就自己写了一个工具函数用来将返回的参数转换为中文
def decode_para(str):
bs = str.split('%')[1:]
print(bs)
result = b''
for b in bs:
result+=bytes([int(b,16)])
return result.decode()