python中把ISO-8859-1编码转化为UTF-8

ISO-8859-1转换 UTF-8

应用场景:

  • 这几天在做微信OAuth2.0授权登录,遇到的问题。
  • 爬取一些数据的时候一定也会遇到这样的问题。

这里我拿微信返回用户个人信息来举例:

{'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函数说明

猜你喜欢

转载自blog.csdn.net/weixin_44053341/article/details/108260302