>>> b'hi'.encode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'bytes' object has no attribute 'encode'
在Python3的Python3中,解决这个问题的方法有:a)去掉bytes.encode()}和{>}方法(记住{}是对老的{{}和{{}}新的{{>})的新的{{>}{{}},b)通过移动{{{}}编码编码到{{cd1}}}编码到}{cd26>}模块模块的模块仅,使用{a1}a1}和{cd1}和{cd1}cd1}和新的新的{<^{}函数。同一类型之间的编解码器转换也已经澄清和更新,请参见Python Specific Encodings section;请注意,此处提到的“文本”编码(在Python2中可用)改为str。在
在python3中,编码bytestring根本不起作用。在
当您对
str
调用encode
时,Python2会尝试使用sys.getdefaultencoding()
(通常是ascii)对字符串进行解码,然后对其进行编码。在这就是为什么你得到一个相当奇怪的错误消息:当你试图用utf-8编码时,用ascii解码是不可能的。在
^{pr2}$奈德解释得比我好,从16:20开始看。在
Python意识到它不能对
str
类型执行encode
,所以它尝试先decode
它!它使用'ascii'
编解码器,如果有任何代码点高于0x7f的字符,则该编解码器将失败这就是为什么当您尝试执行
encode
时,有时会看到一个decode
错误。在在python2中有两种可用的编解码器:在}之间转换的编解码器,以及从}的编解码器。后者的例子是
str
和{str
转换到{base64
和rot13
编解码器。在存在
str.encode()
方法来支持后者:但是现在它已经存在了,人们也将其用于}(反之亦然)。为了支持这些功能,Python将先使用ASCII编解码器将您的
unicode
->;str
编解码器;编码只能从unicode
到{str
值隐式地解码为unicode
,然后再进行最终编码。在顺便说一下,当在
unicode
对象上使用str
->;str
编解码器时,Python首先使用相同的ASCII编解码器隐式地编码到str
。在在Python3的Python3中,解决这个问题的方法有:a)去掉>}方法(记住{}是对老的{{}和{{}}新的{{>})的新的{{>}{{}},b)通过移动{{{}}编码编码到{{cd1}}}编码到}{cd26>}模块模块的模块仅,使用{a1}a1}和{cd1}和{cd1}cd1}和新的新的{<^{} 函数。同一类型之间的编解码器转换也已经澄清和更新,请参见Python Specific Encodings section;请注意,此处提到的“文本”编码(在Python2中可用)改为
bytes.encode()
}和{str
。在相关问题 更多 >
编程相关推荐