Python编码问题 str转bytes再转str 及decode和encode 区别

使用Python爬虫的时候,往往使用的是requests库进行网页请求,而网页请求之后返回的text是属于unicode编码的响应内容,有的时候编码没有问题,但是有的时候又是奇怪。得到的内容是经过编码的。

今天,再使用Python爬取百度贴吧的时候,返回的百度贴吧名字就是经过编码的,返回的是\u开头的文本。也别管了,先查询一下前人经验,原来是属于unicode编码,所以要把他转回去的意思。但是又不可以直接转,而是先转raw bytes 再转回

首先我们现有type()查看下是属于什么类型

如果:type(text) is

那么:text.decode('unicode_escape')

如果:type(text) is

那么:text.encode('latin-1').decode('unicode_escape')

注:去掉latin-1一样成功

注:Latin1是ISO-8859-1的别名,在Python环境下写作latin-1。ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。

decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。

encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190130G1CAQH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券