前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python常见问题 - requests请求参数包含中文报错:UnicodeEncodeError: 'latin-1' codec can't encode characters in posit

Python常见问题 - requests请求参数包含中文报错:UnicodeEncodeError: 'latin-1' codec can't encode characters in posit

作者头像
小菠萝测试笔记
发布2020-06-09 15:23:31
5.2K0
发布2020-06-09 15:23:31
举报

背景

在做接口自动化的时候,Excel作为数据驱动,里面存了中文,通过第三方库读取中文当请求参数传入 requests.post() 里面,就会报错

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 13-14: Body ('小明') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8.

此时我封装的post请求方法是这样的

代码语言:javascript
复制
def post(self, url, data=None, file=None, header=None, cookie=None):
    try:
        res = requests.post(url, data=data, files=file, headers=header, cookies=cookie, verify=False)
        return res
    except BaseException as e:
        loggings.error("post请求错误,错误原因:%s" % e)
        raise e

这个时候,我们要将传入的参数按照utf-8格式编码

代码语言:javascript
复制
# 先转成Json字符串
data = json.dumps(data) 

# 按照utf-8编码成字节码 
data = data.encode("utf-8")

改造后的方法如下

代码语言:javascript
复制
def post(self, url, data=None,  file=None, header=None, cookie=None):
    try:
        data = json.dumps(data) 
        data = data.encode("utf-8")
        res = requests.post(url, data=data, files=file, headers=header, cookies=cookie, verify=False)
        return res
    except BaseException as e:
        loggings.error("post请求错误,错误原因:%s" % e)
        raise e

当然有更简单的方法就是将字典数据转成json字符串传入,请求参数名叫 data ,代码如下:

代码语言:javascript
复制
def post(self, url, data=None,  file=None, header=None, cookie=None):
    try:
        data = json.dumps(data) 
        res = requests.post(url, json=data, files=file, headers=header, cookies=cookie, verify=False)
        return res
    except BaseException as e:
        loggings.error("post请求错误,错误原因:%s" % e)
        raise e
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 改造后的方法如下
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档