跟公众号直接发图文消息(type=news)是一样的, 就是需要把返回的xml字符串 按照第三方公众号的要求 加密一下.
其他的加密消息都没问题, 突然遇到在加密 图文消息时遇到错误
text = self.get_random_str() + struct.pack("I",socket.htonl(len(text))) + text + appid
UnicodeDecodeError: 'utf8' codec can't decode byte 0x8c in position 19: invalid start byte
可能是因为这个图文消息 xml的结果比较复杂 最后 找到 办法
import sys
reload(sys)
sys.setdefaultencoding("ISO-8859-1")
就好了 不要问为什么
上面这个全局iso-8859的操作 会导致其他地方转码报错, 必须得用utf-8所以在加密之前把xml字符串单独encode成utf-8再strip一下就好了
参考:
https://stackoverflow.com/questions/22216076/unicodedecodeerror-utf8-codec-cant-decode-byte-0xa5-in-position-0-invalid-s
网友评论