>>> str1 = unicode('María','utf8')
>>> str2 = u'María'.encode('utf8')
>>> str1 == str2
False
这怎么可能?
以防它是相关的,我正在使用iPython Notebook。
答案 0 :(得分:8)
您有 unicode 字符串和字节字符串。它们不是一回事。
其中一个包含Unicode值María
。另一个包含UTF-8编码的字节序列'Mar\xc3\xada'
。
Python 2在比较Unicode和字节字符串值时会进行隐式转换,但您不应指望该转换,它完全取决于为系统设置的默认编解码器。
如果你还不知道Unicode到底是什么,或者为什么UTF-8不是同一个东西,或者想知道关于编码的任何其他信息,请参阅:
答案 1 :(得分:3)
字符串不能为both "Unicode" and "UTF-8 encoded";它们是相互排斥的。因此,不同的字符串。