python3企業微信發送中文問題

python3企業微信發送中文問題

最近寫個程序,使用python3 通過企業微信推送消息,網上很多相關資料,但拿下來後,

發送消息代碼:
def SendMsg(access_token,send_data):
url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=’+access_token

r = requests.post(url, send_data)
data=json.loads(r.text)
return data

發送代碼很簡單
sText = “測試test”
sMsg = ‘{“touser” : “username”, “msgtype” : “text”, “agentid” : 1000043, “text” : { “content” : "’+sText+’"},“safe”:0}’
r=SendMsg(access_token,sMsg)

如果 sText 不含中文,代碼沒有問題;但如果有了中文,頭痛了好幾天。
首先是出現錯誤: “UnicodeEncodeError: ‘latin-1’ codec can’t encode characters in position…”
出錯的信息
網上找了許多文章,uincode轉換,encode與decode研究一番,但都沒有解決問題,最終是把發送的字符串強制編碼,程序不報錯了,但出現信息漢字沒了。
代碼修改如下:
sText = “測試test”
sText = sText.encode(“utf-8”)
sMsg = ‘{“touser” : “username”, “msgtype” : “text”, “agentid” : 1000043, “text” : { “content” : "’+sText+’"},“safe”:0}’
r=SendMsg(access_token,sMsg)

發送出來的信息是b’\xe6\xb5\x8b\xe8\xaf\x95test’

最後發現了一個偷懶的辦法,把sText重新編碼成“latin1”(只能是latin1!
代碼如下:
sText = sText.encode(“utf-8”).decode(“latin1”)
sMsg = ‘{“touser” : “username”, “msgtype” : “text”, “agentid” : 1000043, “text” : { “content” : "’+sText+’"},“safe”:0}’
r=SendMsg(access_token,sMsg)
在企業微信端接受信息顯示正常,但在cmd窗口調試顯示的漢字亂碼。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章