我注意到以下内容:
>>> u'abc' == 'abc'
True
>>> 'abc' == u'abc'
True
这是否总是正确的,还是可能取决于系统区域设置? (似乎字符串在 python 3 中是 unicode:例如 this question ,但在 2.x 中是字节)
最佳答案
Python 2 在比较两种类型时使用 ASCII 编解码器在 unicode
和 str
之间进行强制转换。所以是的,这是总是正确的。
也就是说,除非你搞砸了你的 Python 安装并使用了 sys.setdefaultencoding()
更改该默认值。您不能正常这样做,因为 sys.setdefaultencoding()
函数在启动时已从模块中删除,但是人们使用的地方有一个 Cargo Cult reload(sys)
恢复该功能并将默认编码更改为其他内容以尝试修复隐式编码和解码问题。正是出于这个原因,这是一件愚蠢的事情。
关于python - 仅包含 ASCII 字符的 UNICODE 字符串是否总是等于 ASCII 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28627444/