ml5020 2017-12-06 07:23 采纳率: 0%
浏览 1456

python UnicodeDecodeError: 'ascii' codec can't...

错误代码如下:
Traceback (most recent call last):
File "D:\workspace\GP\ppp.py", line 45, in
send_message(url,test_token, msg_data)
File "D:\workspace\GP\ppp.py", line 27, in send_message
respone=urllib2.urlopen(temp1).read().decode()
File "C:\Python27\lib\urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "C:\Python27\lib\urllib2.py", line 429, in open
response = self._open(req, data)
File "C:\Python27\lib\urllib2.py", line 447, in _open
'_open', req)
File "C:\Python27\lib\urllib2.py", line 407, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 1241, in https_open
context=self._context)
File "C:\Python27\lib\urllib2.py", line 1195, in do_open
h.request(req.get_method(), req.get_selector(), req.data, headers)
File "C:\Python27\lib\httplib.py", line 1042, in request
self._send_request(method, url, body, headers)
File "C:\Python27\lib\httplib.py", line 1082, in _send_request
self.endheaders(body)
File "C:\Python27\lib\httplib.py", line 1038, in endheaders
self._send_output(message_body)
File "C:\Python27\lib\httplib.py", line 880, in _send_output
msg += message_body
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 114: ordinal not in range(128)

原来代码:
import json
import urllib2

def messages(msg):
values = {
"touser": 'qy01c75a831f17d000b3d5498cfc',
"msgtype": 'text',
"agentid": 1000026,
"text": {'content': msg},
"safe": 0
}
msges= json.dumps(values, ensure_ascii=False, encoding="utf-8")
return msges

def get_token(url, corpid, corpsecret):
token_url = '%s/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (url, corpid, corpsecret)
token = json.loads(urllib2.urlopen(token_url).read().decode())['access_token']
print token
return token

def send_message(url,token, data):
send_url = '%s/cgi-bin/message/send?access_token=%s' % (url,token)
print send_url
temp1=urllib2.Request(url=send_url, data=data)
print temp1
respone=urllib2.urlopen(temp1).read().decode()
x = json.loads(respone)['errcode']
# print(x)
if x == 0:
print ('Succesfully')
else:
print ('Failed')

msg='中文' #此处有中文是出错,英文时没错,为什么呢???
print type(msg)

print msg

corpid = '**********************'
corpsecret = '******************************************'
url = 'https://qyapi.weixin.qq.com'
msg_data= messages(msg)
print msg_data
test_token=get_token(url, corpid, corpsecret)
send_message(url,test_token, msg_data)

  • 写回答

1条回答 默认 最新

  • FireManLuo 2017-12-06 07:31
    关注

    在开头声明一下编码
    #coding=utf-8

    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错