requests UnicodeEncodeError: 'latin-1'

requests模块提交json数据中有中文报错求解。


Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\test.py", line 30, in <module>
    sendMessage("测试中文")
  File "C:\Users\Administrator\Desktop\test.py", line 29, in sendMessage
    result=s.post("https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token
="+access_token,data=data)
  File "D:\Python\lib\site-packages\requests-2.10.0-py3.5.egg\requests\sessions.
py", line 518, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "D:\Python\lib\site-packages\requests-2.10.0-py3.5.egg\requests\sessions.
py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "D:\Python\lib\site-packages\requests-2.10.0-py3.5.egg\requests\sessions.
py", line 585, in send
    r = adapter.send(request, **kwargs)
  File "D:\Python\lib\site-packages\requests-2.10.0-py3.5.egg\requests\adapters.
py", line 403, in send
    timeout=timeout
  File "D:\Python\lib\site-packages\requests-2.10.0-py3.5.egg\requests\packages\
urllib3\connectionpool.py", line 578, in urlopen
    chunked=chunked)
  File "D:\Python\lib\site-packages\requests-2.10.0-py3.5.egg\requests\packages\
urllib3\connectionpool.py", line 362, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "D:\Python\lib\http\client.py", line 1083, in request
    self._send_request(method, url, body, headers)
  File "D:\Python\lib\http\client.py", line 1127, in _send_request
    body = body.encode('iso-8859-1')
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 53-56: o
rdinal not in range(256)

报错信息如上

代码如下:

def sendMessage(node):
    data = json.dumps({'touser':"@all",'toparty':"@all",'msgtype':"text",'agentid':"1000002",'text':{'content':node},'safe':"0"},ensure_ascii=False)
阅读 4.2k
1 个回答

把,ensure_ascii=False去掉就行了

import json
node = "测试中文"
data = json.dumps({'touser':"@all",'toparty':"@all",'msgtype':"text",'agentid':"1000002",'text':{'content':node},'safe':"0"},ensure_ascii=False)
data.encode('iso-8859-1')    #报错

data = json.dumps({'touser':"@all",'toparty':"@all",'msgtype':"text",'agentid':"1000002",'text':{'content':node},'safe':"0"})
data.encode('iso-8859-1')    #正常

还不行就试试requests.post的data不json.dumps, 直接传

data = {'touser':"@all",'toparty':"@all",'msgtype':"text",'agentid':"1000002",'text':{'content':node},'safe':"0"}

requests.post(url, data=data)  # 数据直接传字典
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题