18508410033 发表于 2020-10-21 18:04:13

decode和encode问题求助

s = 'hah'.decode('utf-8')
我这么写为什么AttributeError: 'str' object has no attribute 'decode'会报错。
我看网上的教程也是这么写的,就没有问题呢这是我看别人的   在 Windows 等以 GBK 编码为默认汉字编码的系统环境内,程序代码、文本文件中的汉字一律采用的是 GBK 编码,为了能够被 Python 所接纳,需要使用字符串的 decode() 方法,对字符串按 'GBK' 进行解码,以便得到字符串的内码,也就是 unicode 编码形式,例如,执行 s = '小甲鱼' . decode('GBK') 语句,那么,可以得到内码(unicode)形式的字符串 '小甲鱼',这时,如果我们希望按 'GBK' 和 'UTF-8' 的编码格式输出这个字符串,那么,可以通过字符串的 encode() 方法,分别通过 s . encode('GBK') 、s . encode('UTF-8') 两个语句来实现

昨非 发表于 2020-10-21 18:13:29

本帖最后由 昨非 于 2020-10-21 18:14 编辑

Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。

https://www.runoob.com/python3/python3-string-decode.html

hrp 发表于 2020-10-21 18:21:03

本帖最后由 hrp 于 2020-10-21 18:39 编辑

你看的应该是Python2的教程,要不就是教程写错了。py2的str类型对应py3的byte,py2的unicode类型对应py3的str。
在Python3中,str类型才有encode方法,byte类型才有decode方法,比如>>>'你好'.encode()
>>>b'\xe4\xbd\xa0\xe5\xa5\xbd'

>>>b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode()
>>>'你好'
页: [1]
查看完整版本: decode和encode问题求助