gpt4 book ai didi

python - 在 python 中对 str 使用 encode 会发生什么?

转载 作者:太空狗 更新时间:2023-10-29 22:07:39 24 4
gpt4 key购买 nike

我明白了有关 unicode、编码和解码的要点。但是我不明白为什么 encode 函数对 str 类型有效。我希望它只适用于 unicode 类型。因此我的问题是:当 encode 用于 str 而不是 unicode 时,它​​的行为是什么?

最佳答案

在 Python 2 中有两种类型的编解码器可用;那些在 strunicode 之间转换的,以及那些从 str 转换为 str 的。后者的示例是 base64rot13 编解码器。

str.encode() 方法的存在是为了支持后者:

'binary data'.encode('base64')

但既然它存在,人们也将它用于 unicode -> str 编解码器;编码只能从 unicodestr (并以其他方式解码)。为了支持这些,Python 将首先使用 ASCII 编解码器隐式将您的 str 值解码为 unicode,然后再进行最终编码。

顺便说一句,当在 unicode 对象上使用 str -> str 编解码器时,Python 首先隐式编码为 str 使用相同的 ASCII 编解码器。

在 Python 3 中,这已通过 a) 删除 bytes.encode()str.decode() 方法解决(记住 bytes 是旧的 strstr 是新的 unicode),b) 通过移动 str -> str 编码到 codecs 模块 only,使用 codecs.encode()codecs.decode()功能。相同类型之间的编解码器转换也已得到澄清和更新,请参阅 Python Specific Encodings section ;请注意,此处提到的“文本”编码在 Python 2 中可用,而是编码为 str

关于python - 在 python 中对 str 使用 encode 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35662365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com