这里我拿微信返回用户个人信息来举例:
{
'openid': 'oGl2QwQ07wZRyJVu0t57y1CaVlg4', 'nickname': 'é\x98³å\x85\x89ç\x94·å\xad©', 'sex': 1, 'language': 'zh_CN', 'city': 'æ\x9c\x9dé\x98³', 'province': 'å\x8c\x97京', 'country': 'ä¸\xadå\x9b½', 'headimgurl': 'http://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTKXOSA55icqibms9Vfg1zUjWS46Al6LbMCy09ibaic2OzuJ3WnQ2ToCbUscL08Ef4qzeULjIicyw8vkHicg/132', 'privilege': [], 'unionid': 'oaga40loq9A16lzhpN_KNUnF7doM'}
我们发现nickname、city、province、country的值是ISO-8859-1的编码格式
需要注意的是:微信返回的数据编码格式为 ISO-8859-1 ,需要转换成 utf-8 。
我们就拿微信返回的ISO-8859-1值来示范一下如何转换 UTF-8编码格式。
nickname = 'é\x98³å\x85\x89ç\x94·å\xad©' # 姓名
city = 'æ\x9c\x9dé\x98³' # 城市
province = 'å\x8c\x97京' # 省份
country = 'ä¸\xadå\x9b½' # 国家
str = '-' # 连接字符
seq = ('é\x98³å\x85\x89ç\x94·å\xad©', 'æ\x9c\x9dé\x98³', 'å\x8c\x97京', 'ä¸\xadå\x9b½') # 要连接的元素序列
result = str.join(seq) # .jion()拼接结果
ISO = result.encode('ISO-8859-1') # 先编码
print(ISO.decode('utf8')) # 后解码 在打印控制台
阳光男孩-朝阳-北京-中国
补充知识:
encode(编码):按照某种规则将“文本”转换为“字节流”,unicode转化为str
decode(解码):将“字节流”按照某种规则转换成“文本”,str转化为unicode
参考地址:
Python join()方法
python encode和decode函数说明