我使用的是python 2.7 例如:
a = u'你好'
b = '你好'
我尝试了以下代码,但失败了
print a.encode('UTF-8') == b #return False
如何将它们相等?
答案 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'
。