错题记录。
环境:
系统:Centos7.9
python: 3.6
tornado: 5.1.1
出错问题:
前端调用tornado后台接口时,无法返回正确内容,看了下log,报错:
Invalid x-www-form-urlencoded body: 'latin-1' codec can't encode characters
全网搜了个遍,只要有类似的解决方法都试了一遍,最后忘了在哪来搜到的成功解决了该问题。
出错原因:
解析参数时字符编码问题,因为参数里有中文。
解决方法:
修改tornado的一个源文件 httputil.py,在这个目录:
...python路径/lib/python3.6/site-package/tornado/
把759行改掉:
原代码:
uri_arguments = parse_qs_bytes(native_str(body), keep_blank_values=True)
改为:
uri_arguments = parse_qs_bytes(body.decode('latin1'), keep_blank_values=True)
改完以后,重启服务,解决。