两个显然相等的Python Unicode UTF8编码字符串don';不匹配

两个显然相等的Python Unicode UTF8编码字符串don';不匹配,python,unicode,utf-8,Python,Unicode,Utf 8,这怎么可能 为了以防万一,我正在使用iPython笔记本。您有一个unicode字符串和一个字节字符串。它们不是一回事 一个是Unicode值,maria。另一个包含UTF-8编码的字节序列,'Mar\xc3\xada' 在比较Unicode和字节字符串值时,Python2会进行隐式转换,但您不应该指望这种转换,它完全取决于系统的默认编解码器集 如果您还不知道Unicode到底是什么,或者为什么UTF-8不是同一个东西,或者还想了解编码的其他内容,请参阅: 乔尔斯波尔斯基 内德·巴奇尔德 您

这怎么可能

为了以防万一,我正在使用iPython笔记本。

您有一个unicode字符串和一个字节字符串。它们不是一回事

一个是Unicode值,
maria
。另一个包含UTF-8编码的字节序列,
'Mar\xc3\xada'

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

如果您还不知道Unicode到底是什么,或者为什么UTF-8不是同一个东西,或者还想了解编码的其他内容,请参阅:

  • 乔尔斯波尔斯基

  • 内德·巴奇尔德

您有一个unicode字符串和一个字节字符串。它们不是一回事

一个是Unicode值,
maria
。另一个包含UTF-8编码的字节序列,
'Mar\xc3\xada'

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

如果您还不知道Unicode到底是什么,或者为什么UTF-8不是同一个东西,或者还想了解编码的其他内容,请参阅:

  • 乔尔斯波尔斯基

  • 内德·巴奇尔德


    • 字符串不能为空;它们是相互排斥的。因此,不同的字符串。

      不能使用字符串;它们是相互排斥的。因此,不同的字符串。

      我不知道这是否应该是一个答案,但打印我得到的两个字符串的表示:
      u'Mar\xeda'
      /
      'Mar\xc3\xada'
      ,因此在表示方面存在差异。我不知道这是否应该是一个答案,但是打印我得到的两个字符串的表示形式:
      u'Mar\xeda'
      /
      'Mar\xc3\xada'
      ,因此在表示形式上存在差异。
      >>> str1 = unicode('María','utf8')
      >>> str2 = u'María'.encode('utf8')
      >>> str1 == str2
      False