仅包含 ASCII 字符的 UNICODE 字符串是否始终等于 ASCII 字符串?

Will a UNICODE string just containing ASCII characters always be equal to the ASCII string?

我注意到以下内容:

>>> u'abc' == 'abc'
True
>>> 'abc' == u'abc'
True

这是否总是正确的,还是可能取决于系统区域设置? (似乎字符串在 python 3 中是 unicode:例如 this question,但在 2.x 中是字节)

Python 2 在比较两种类型时使用 ASCII 编解码器在 unicodestr 之间进行强制转换。所以是的,这是 总是 正确的。

也就是说,除非您弄乱了 Python 安装并使用 sys.setdefaultencoding() 更改默认设置。你不能正常这样做,因为 sys.setdefaultencoding() 功能在启动时从模块中 删除 ,但是人们使用 reload(sys) 恢复该功能并将默认编码更改为其他内容以尝试修复隐式编码和解码问题。正是出于这个原因,这是一件愚蠢的事情。