我正在寻找如何工作在python 2.7编码,我不能完全理解它的一些方面。 我已经使用不同编码的文件,但到目前为止,我还是没有问题。 直到我开始使用某些API ,并且需要使用Unicodestring
u'text”
我正在使用正常string
'文本'
其中提出了很多问题。
所以我想知道如何从Unicodestring到正常string ,因为我正在处理的数据是由正常string处理的,我只知道如何获得Unicode string ,而不会出现问题,通过Python Shell 。
我试过的是:
>>> foo = "gurú" >>> bar = u"gurú" >>> foo 'gur\xa3' >>> bar u'gur\xfa'
现在,要得到一个Unicodestring,我所做的是:
>>> foobar = unicode(foo, "latin1") u'gur\xa3'
但是这对我不起作用,因为我在我的代码中做了一些比较:
>>> foobar in u"Foo gurú Bar" False
即使原始值是相同的,由于编码而失败。
[编辑]
我在Windows 10上使用Python Shell。
Windows终端使用DOS的遗留代码页。 对于美国的Windows,它是:
>>> import sys >>> sys.stdout.encoding 'cp437'
Windows应用程序使用Windows代码页。 Python的IDLE将显示窗口编码:
>>> import sys >>> sys.stdout.encoding 'cp1252'
你的结果可能会有所不同!
所以如果你想从正常的字符串到Unicode和向后。 那么首先你必须找出你的系统的编码,这个编码用于Python 2.X中的普通字符串。 之后,使用它来进行正确的转换。
我给你留个例子:
>>> import sys >>> sys.stdout.encoding 'cp850' >>> >>> foo = "gurú" >>> bar = u"gurú" >>> foo 'gur\xa3' >>> bar u'gur\xfa' >>> >>> foobar = unicode(foo, 'cp850') u'gur\xfa' >>> >>> foobar in u"Foo gurú Bar" True