Skip to main content
 首页 » 编程设计

python 2.7 : 'Ramón' == u'Ramón'

2025年05月04日13java哥

返回 False,因为第一个是 Str 对象,第二个是 Unicode 对象。

但是,由于它们都是 Ramón,我该怎么做才能返回 True。

我尝试将第一个转换为 Unicode 对象:

>>> varString = 'Ramón' 
>>> varUnicode = u'Ramón' 
>>> varString == varUnicode 
False 
>>> newUnicode == unicode(varString, encoding='unicode-escape') 
>>> varString; varUnicode; newUnicode 
'Ram\xa2n' 
u'Ram\xf3n' 
u'Ram\xa2n' 
>>> varUnicode == newUnicode 
False 

它们有不同的编码。我能做些什么?谢谢!

请您参考如下方法:

varString 不太可能在 unicode-escape 中编码。当 Python 解释器将它在 >>> 提示符下读取的内容解码为 unicode 对象时,它使用 sys.stdin.encoding 的编码。因此,您可以在自己解码 str 对象时使用相同的编码:

>>> import sys 
>>> sys.stdin.encoding 
'UTF-8' 
>>> varString = 'Ramón' 
>>> varUnicode = u'Ramón' 
>>> newUnicode = unicode(varString, encoding='UTF-8') # or encoding=sys.stdin.encoding 
>>> varString; varUnicode; newUnicode 
'Ram\xc3\xb3n' 
u'Ram\xf3n' 
u'Ram\xf3n' 
>>> varUnicode == newUnicode 
True