这些角色有何不同?

时间:2017-07-26 21:56:06

标签: python python-2.7 unicode

我不确定为什么这些字符会有所不同,因为它们在视觉上看起来是相同的。它们是同一个角色的不同表现形式吗?或实际上不同的人物?有没有一种方法可以检查它们的相等性,从而产生True

>>> s = u'\u2022' 
>>> ss = '•'
>>> s == ss
False
>>> print u'\u2022' , '•'
• •
>>> ss = unicode(ss)
>>> ss == s
False
>>> repr(ss)
"u'\\xe2\\x80\\xa2'"
>>> repr(s)
"u'\\u2022'"

1 个答案:

答案 0 :(得分:7)

u"\u2022"(您的s)是包含项目符号字符的Unicode字符串(类型unicode)。

"\xe2\x80\xa2"(您的ss)是一个字节字符串(类型str),包含用于将项目符号编码为UTF-8的三个字节。

您可以使用str.decodeunicode.decode

将其中一个转换为另一个
>>> s_encode = s.encode("UTF-8")
>>> s_encode == ss
True

>>> ss_decode = ss.decode("UTF-8")
>>> ss_decode == s
True