UnicodeEncodeError: ‘latin-1‘ codec can‘t encode characters in position 177-178: Body (‘深圳‘) is not

 源码:

    def test_member_save(self):
        headers = {
            "Accept": "*/*",
            "Content-Length":"",
            "Host":"",
            # "Accept-Encoding": "gzip, deflate, br",
            # "Accept-Language": "zh-CN,zh;q=0.9",
            "Connection": "keep-alive",
            "Content-Type": "application/json",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                          "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
        }
        path='./data/member/member_data.json'
        raw_path='E:\data\python\gulimalltest\data\member\member_data.json'
        with  open(raw_path,"r",encoding="UTF-8")  as file:
            data=file.read()
        member_data_list=json.loads(data)


        member_data=member_data_list['save_data1']
        print(member_data)
        url = 'http://localhost:88/api/member/member/save'
        #ret = self.apikey.post(url=url,data=None,json=member_data)
        ret = requests.post(url, data=data,headers=headers)
        log.info(f"------------run {ret }")
        logging.info(f"ret.status_code={ret.status_code}")

        assert ret.status_code == 200
        logging.info(f"ret.encoding={ret.encoding}")
        assert ret.encoding == 'UTF-8'
        logging.info(f"ret.headers={ret.headers}")
        logging.info(f"ret.text={ret.text}")
        logging.info(f"ret.json={ret.json}")
        data = ret.content.decode(ret.apparent_encoding)
        logging.info(data)

问题: 

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

问题原因: 

请求body里面有 汉字,没有进行untf-8编码导致,解决方法,对data进行 encode()编码

修改 ;

ret = requests.post(url, data=data.encode(encoding="utf-8"),headers=headers)
    def test_member_save(self):
        headers = {
            "Accept": "*/*",
            "Content-Length":"",
            "Host":"",
            # "Accept-Encoding": "gzip, deflate, br",
            # "Accept-Language": "zh-CN,zh;q=0.9",
            "Connection": "keep-alive",
            "Content-Type": "application/json",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                          "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
        }
        path='./data/member/member_data.json'
        raw_path='E:\data\python\gulimalltest\data\member\member_data.json'
        with  open(raw_path,"r",encoding="UTF-8")  as file:
            data=file.read()
        member_data_list=json.loads(data)


        member_data=member_data_list['save_data1']
        print(member_data)
        url = 'http://localhost:88/api/member/member/save'
        #ret = self.apikey.post(url=url,data=None,json=member_data)
        ret = requests.post(url, data=data.encode(encoding="utf-8"),headers=headers)
        log.info(f"------------run {ret }")
        logging.info(f"ret.status_code={ret.status_code}")

        assert ret.status_code == 200
        logging.info(f"ret.encoding={ret.encoding}")
        assert ret.encoding == 'UTF-8'
        logging.info(f"ret.headers={ret.headers}")
        logging.info(f"ret.text={ret.text}")
        logging.info(f"ret.json={ret.json}")
        data = ret.content.decode(ret.apparent_encoding)
        logging.info(data)

 

你可能感兴趣的:(Python自动化,前端,linux,javascript,python)