发布网友 发布时间:2024-10-24 09:43
共1个回答
热心网友 时间:2024-10-30 09:33
问题:遇到 'str' object has no attribute 'decode' 错误时,通常会考虑两个原因。
原因一:Python2与Python3在字符串编码上的差异。需要通过编码转换来解决,例如:print (‘张俊’.encode(‘utf-8’). decode(‘utf-8’) ) 来确保字节字符串能正确显示。
原因二:尝试不同编码方式,如utf-8, gbk, ISO-8859-1, gb2312,来解决编码问题。
原因一通常为主要原因,解决步骤也更为关键。错误出现是因为str类型非bytes类型,无法执行decode操作。
在编程中,普通str是人类可理解的语义,而字节流str(bytes)是机器识别的形式。通过编码(encode)将普通字符串转化为机器可识别的bytes,再通过解码(decode)将bytes转化为可读字符串。
Python3中str默认为非bytes类型,所以不能直接使用decode,需要先encode转为bytes,再decode。而Python2中的str默认为bytes类型,可以进行decode操作。
因此,str.decode 实际上是针对bytes类型str的decode操作。Python3中经常出现 'str' object has no attribute 'decode' 错误,解决方法是先encode转为bytes,再decode。
对于强行进行decode操作且忽略错误的情况,可以使用 bytes.decode(‘’utf-8‘’, ‘’ignore‘’)
记忆技巧:编码(encode)将人类能理解的转换为机器能识别的;解码(decode)将机器识别的信息转换为人能读懂的。