当访问页面,返回结果出现编码问题,如下所示:

result = requests.get(url).text
print(result)

结果为:

{"key":"python\u662f\u4ec0\u4e48"}

起初,想通过解码的方式来显示中文:

result = requests.get(url).text

result = result.decode('unicode_escape')

print(result)

但是,出现报错:

AttributeError: 'str' object has no attribute 'decode'

解决办法:加上.encode('utf-8')即可,如下所示:

result = result.encode('utf-8').decode('unicode_escape')

问题分析:

python3里面,字符串要先encode手动指定其为某一编码的字节码之后,才能decode解码。

扩展阅读:

str与bytes表示的是两种数据类型,str为字符串型,bytes为字节型。对str编码encode得到bytes,对bytes解码得到str,两者互为转换。

出现错误:AttributeError: 'str' object has no attribute 'decode' 的原因是对str字符串使用了解码。

txt = '我爱你,中国!'
#str->bytes encode
txt = txt.encode('utf-8')
print(type(txt))

#bytes->str decode
txt = txt.decode('utf-8')
print(type(txt))

结果展示:

<class 'bytes'>

<class 'str'>