AttributeError: 'str' object has no attribute 'decode'
错误现象
原码
txtstring = '英文網名'
tt= txtstring.decode('utf-8')
print(tt)
运行结果
Traceback (most recent call last):
File "d:\ProgramProject\toolspython\zhtools\test2.py", line 3, in <module>
tt= txtstring.decode('utf-8')
AttributeError: 'str' object has no attribute 'decode'
错误结果
AttributeError: ‘str’ object has no attribute ‘decode’
分析原因
原因1:Python2和Python3在字符串编码上的区别
Python3的str 默认不是bytes,所以不能decode,只能先encode转为bytes,再decode。
Python2的str 默认是bytes,所以能decode。
原因2:str的类型本身不是bytes,所以不能解码
普通str:可理解的语义
字节流str(bytes)(0101010101,可视化显示)
可以能先将字符串encode转为bytes,再decode
强制转换忽略错误:bytes.decode(‘’utf-8‘’, ‘’ignore‘’)
两个语法(encode 和 decode)
Encode: 把普通字符串 转为 机器可识别的bytes
Decode: 把bytes转为字符串
str.decode 本质是bytes类型的str的decode
编码就是encode,把你认识的转为机器认识的
解码decode,就是吧一堆机器认识的,解释为人能读懂的