如何在 Python 中比较 unicode 和 str



我的代码:

a = '汉'
b = u'汉'

这两个是同一个汉字。但显然,a == bFalse.我该如何解决这个问题?请注意,我无法将a转换为utf-8因为我无法访问代码。我需要将b转换为a正在使用的编码。

所以,我的问题是,我该怎么做才能将b的编码转换为a的编码?

如果您不知道 a 的编码,则需要:

  1. 检测a的编码
  2. 使用检测到的编码对b进行编码

首先,为了检测a的编码,让我们使用 chardet。

$ pip install chardet

现在让我们使用它:

>>> import chardet
>>> a = '汉'
>>> chardet.detect(a)
{'confidence': 0.505, 'encoding': 'utf-8'}

因此,要实际完成您的要求:

>>> encoding = chardet.detect(a)['encoding']
>>> b = u'汉'
>>> b_encoded = b.encode(encoding)
>>> a == b_encoded
True

使用 str.decode 解码编码的字符串a

>>> a = '汉'
>>> b = u'汉'
>>> a.decode('utf-8') == b
True

注意 根据源代码编码替换utf-8

a.decodeb.encode都可以:

In [133]: a.decode('utf') == b
Out[133]: True
In [134]: b.encode('utf') == a
Out[134]: True

请注意,str.encodeunicode.decode也可用,不要将它们混淆。请参阅编码/解码有什么区别?

最新更新