我的代码:
a = '汉'
b = u'汉'
这两个是同一个汉字。但显然,a == b
是False
.我该如何解决这个问题?请注意,我无法将a
转换为utf-8
因为我无法访问代码。我需要将b
转换为a
正在使用的编码。
所以,我的问题是,我该怎么做才能将b
的编码转换为a
的编码?
如果您不知道 a
的编码,则需要:
- 检测
a
的编码 - 使用检测到的编码对
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.decode
和b.encode
都可以:
In [133]: a.decode('utf') == b
Out[133]: True
In [134]: b.encode('utf') == a
Out[134]: True
请注意,str.encode
和unicode.decode
也可用,不要将它们混淆。请参阅编码/解码有什么区别?