Python yaml 文件里的中文,以 json 格式请求抓包为什么是 unicode

鸣虫 · 2021年01月08日 · 最后由 鸣虫 回复于 2021年01月11日 · 2099 次阅读

用的是 pytest 框架,实现从 yaml 文件读取测试数据,读取的方法如下:

yaml 里面存在中文,截取一段如下:

具体用例代码如下:

问题来了,服务端返回 500,提示参数数据错误,通过抓包发现,请求的 body 里面不是中文是 unicode

网上搜过解决方案,尝试解决无果,请问问题在哪里呢?感激不尽!

共收到 6 条回复 时间 点赞

问题应该不在 http 请求,而是 json.dumps 方法,你在 dumps 里加上 ensure_ascii=False,再试试看

中文或者 unicode 应该不影响啊;中文变成 Unicode 的原因是 json.dumps 默认会将中文转成 Unicode,json.dumps(data, ensure_ascii=False) 这样可以保持中文

看下是不是格式传错了,body 是要 form 表单还是 json 格式的

谢谢各位,加上 ensure_ascii=False,但是不够,还要 encode(),不然会报错,正确如下:
result = self.DeviceManage.send_post(url, (json.dumps(data, ensure_ascii=False)).encode(), header)

鸣虫 关闭了讨论 01月08日 10:10
鸣虫 重新开启了讨论 01月08日 10:13
鸣虫 回复

不用这么麻烦吧,底层如果是用 requests.post 的话,json=data 传递 json 数据,data=data 传递 form 表单数据

cool 回复

嗯,你有更好的写法嘛

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册