tornado使用中遇到的latin-1字符编码问题

错题记录。

环境:

        系统: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)

                改完以后,重启服务,解决。

        

猜你喜欢

转载自blog.csdn.net/gootyking/article/details/134614572