1
>>> str1 = unicode('María','utf8')
>>> str2 = u'María'.encode('utf8')
>>> str1 == str2
False

这怎么可能?

以防万一,我使用的是 iPython Notebook。

4

2 回答 2

8

你有一个unicode字符串和一个字节字符串。它们不是同一件事。

一个持有 Unicode 值,María. 另一个保存 UTF-8 编码的字节序列,'Mar\xc3\xada'.

在比较 Unicode 和字节字符串值时,Python 2 确实会进行隐式转换,但您不应该指望这种转换,它完全取决于为您的系统设置的默认编解码器。

如果您还不知道 Unicode 到底是什么,或者为什么 UTF-8 不是一回事,或者想了解有关编码的任何其他信息,请参阅:

于 2013-06-27T12:36:00.787 回答
3

字符串不能同时是“Unicode”和“UTF-8 编码”;它们是相互排斥的。因此,不同的字符串。

于 2013-06-27T12:36:36.870 回答