繁体   English   中英

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

[英]How can I compare unicode type with str type in python of Chinese?

我以python 2.7为例:

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

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

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

如何比较它们相等?

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

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

如果您使用的是python2您的尝试将起作用。

很可能您的Python源文件未使用UTF-8编码。 变量b将包含这些引号之间的任何字节 这些字节将取决于编码。 例如

# 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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM