已解决AttributeError: ‘str‘ object has no attribute ‘decode‘解决方法异常的正确解决方法,亲测有效!!!

已解决AttributeError: ‘str‘ object has no attribute ‘decode‘方案二-LMLPHP

报错问题

粉丝群里面的一个小伙伴敲代码时发生了报错(当时他心里瞬间凉了一大截,跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助到更多遇到这个bug不会解决的小伙伴),报错信息如下:

已解决AttributeError: ‘str‘ object has no attribute ‘decode‘方案二-LMLPHP
已解决AttributeError: ‘str‘ object has no attribute ‘decode‘方案二-LMLPHP
出现这个问题可能是两个原因造成的:
1、Python2和Python3在字符串编码上的区别。
2、Python 3.4: str : AttributeError: ‘str’ object has no attribute 'decode

解决方法

解决方法如下

已解决AttributeError: ‘str‘ object has no attribute ‘decode‘方案二-LMLPHP
原因一的解决方法:
print (‘张俊’.encode(‘utf-8’). decode(‘utf-8’) ) #必须将字节字符串解码后才能打印出来
参考链接:https://www.cnblogs.com/geekard/archive/2012/10/04/python-string-endec.html
原因二的解决方法:各种编码方式尝试解决:utf-8,gbk,ISO-8859-1,gb2312
原因一才是主要原因,主要解决方法。
已解决AttributeError: ‘str‘ object has no attribute ‘decode‘方案二-LMLPHP
AttributeError: ‘str’ object has no attribute ‘decode’
一般是因为str的类型本身不是bytes,所以不能解码

两个概念:
普通str:可理解的语义
字节流str(bytes)(0101010101,可视化显示)

两个语法
Encode: 把普通字符串 转为 机器可识别的bytes
Decode: 把bytes转为字符串

两个差异
Python3的str 默认不是bytes,所以不能decode,只能先encode转为bytes,再decode
python2的str 默认是bytes,所以能decode

一个结论
所以str.decode 本质是bytes类型的str的decode
python3经常出现 AttributeError: ‘str’ object has no attribute ‘decode’

非要这样玩,只能先encode转为bytes,再decode
强制转换忽略错误:
bytes.decode(‘’utf-8‘’, ‘’ignore‘’)

记忆小技巧
编码就是encode,把你认识的转为,机器人认识的
解码decode,就是吧一堆机器认识的,解释为人能读懂的

福利

每周会送6本技术书籍包邮到家
由于博主时间精力有限,每天私信人数太多,没办法每个粉丝都及时回复
大家可以进社区裙或者添加博主微信
点击下方链接即可
http://t.csdn.cn/6kInJ

04-03 17:07