我了解unicode,编码和解码。但是我不明白为什么编码函数对str类型起作用。我希望它仅适用于unicode类型。因此,我的问题是:在str而不是unicode上使用encoding的行为是什么?
在Python 2中,有两种类型的编解码器可用:在str
和之间进行转换的人unicode
,以及从和进行转换的str
人str
。后者的示例是base64
和rot13
编解码器。
str.encode()
存在支持后者的方法:
'binary data'.encode('base64')
但是现在它已经存在了,人们也将它用于unicode
->str
编解码器。编码只能从unicode
转到str
(然后以其他方式解码)。为了支持这些功能,Python将首先使用ASCII编解码器隐式解码您的str
值unicode
,然后再进行最终编码。
顺便说一句,当在对象上使用str
->str
编解码器时unicode
,Python首先隐式编码为str
使用相同的ASCII编解码器。
在Python 3中,已通过以下方法解决了这一问题:a)删除bytes.encode()
andstr.decode()
方法(请记住,bytes
旧方法str
和str
新方法都属于sorta unicode
),以及b)使用和函数将str
->str
编码仅移动到codecs
模块中。相同类型之间的编解码器转换也已得到澄清和更新,请参见“ Python特定编码”部分;请注意,此处提到的“文本”编码在Python 2中可用,而改为编码为。codecs.encode()
codecs.decode()
str
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句