我注意到以下情况:
>>> u'abc' == 'abc'
True
>>> 'abc' == u'abc'
True
这总是正确的还是可能取决于系统区域设置? (似乎字符串在python 3中是unicode:例如this question,但是2.x中的字节)
答案 0 :(得分:14)
Python 2在比较两种类型时使用ASCII编解码器在unicode
和str
之间强制执行。所以是的,这是总是是真的。
也就是说,除非您搞砸了Python安装并使用sys.setdefaultencoding()
来更改默认设置。你通常不能这样做,因为sys.setdefaultencoding()
功能在启动时从模块删除,但有一个Cargo Cult四处走动,人们使用reload(sys)
恢复该函数并将默认编码更改为其他内容以尝试修复隐式编码和解码问题。正是出于这个原因,这是一件蠢事。