【发布时间】:2017-12-25 07:26:50
【问题描述】:
我正在研究 python 2.7 中的编码是如何工作的,但我不太了解它的某些方面。我处理过具有不同编码的文件,但到目前为止我做得还不错。直到我开始使用某些 API,它需要使用 Unicode 字符串
你'文本'
我使用的是普通字符串
'文本'
这引发了很多问题。
所以我想知道如何从 Unicode String 到 Normal String 并向后,因为我正在使用的数据是由 Normal 处理的字符串,我只知道如何通过 Python Shell 获取 Unicode 字符串而不会出现问题。
我试过的是:
>>> foo = "gurú"
>>> bar = u"gurú"
>>> foo
'gur\xa3'
>>> bar
u'gur\xfa'
现在,要获取 Unicode 字符串,我要做的是:
>>> foobar = unicode(foo, "latin1")
u'gur\xa3'
但这对我不起作用,因为我在我的代码中进行了一些比较,如下所示:
>>> foobar in u"Foo gurú Bar"
False
由于编码的原因,即使原始值相同,也会失败。
[编辑]
我在 Windows 10 上使用 Python Shell。
【问题讨论】:
-
这是因为你使用了错误的编码,
latin1不正确。如果您使用的是 Windows,您应该尝试mbcs,因为它使用了适合您的 Windows 风格的本机编码。 -
@MarkRansom 你是对的,确实我没有使用正确的编码,不幸的是我
mbcs,不是要走的路。但是我在 stackoverflow 的另一个问题中找到了正确的答案,因此我将其添加为 asnwer 并链接到它,以供进一步提问。 -
mbcs唯一不起作用的情况是,如果您在命令窗口中,我应该想到这一点。很高兴您能找到答案。
标签: windows python-2.7 unicode character-encoding console