如何在中文的python中比较unicode类型和str类型?

时间:2017-02-15 08:10:55

标签: python unicode

我使用的是python 2.7 例如:

a = u'你好'
b = '你好'

我尝试了以下代码,但失败了

print a.encode('UTF-8') == b #return False

如何将它们相等?

2 个答案:

答案 0 :(得分:1)

我希望您使用python3,这两个变量都是string您不需要更改为任何变量。只需比较它们。

>>> a = u'你好'
>>> b = '你好'
>>> type(a)
<class 'str'>
>>> type(b)
<class 'str'>
>>> a == b
True

如果您使用python2,您的尝试将有效。

答案 1 :(得分:1)

很可能你的Python源文件没有用UTF-8编码。变量b将包含这些引号之间的 bytes 。那些字节将取决于编码。例如

# coding: utf-8
print repr("你好")

打印:'\xe4\xbd\xa0\xe5\xa5\xbd'

现在,如果我们将源文件保存为GB2312并更新声明:

# coding: GB2312
print repr("你好")

打印:'\xc4\xe3\xba\xc3'

在任何情况下,如果你有一个包含文本的字节数组,你还需要知道这些字节的编码,否则你无法可靠地解释它们。

如果您需要UTF-8字节,无论源文件编码如何,您都可以写u'你好'.encode('utf-8')将始终返回'\xe4\xbd\xa0\xe5\xa5\xbd'