我的代码看起来像这样:
# -*- coding: utf-8 -*-
print ["asdf", "中文"]
print ["中文"]
print "中文"
在Eclipse控制台输出的结果非常奇怪:
['asdf', '\xe4\xb8\xad\xe6\x96\x87']
['\xe4\xb8\xad\xe6\x96\x87']
中文
我第一个问题是:为什么最后一行得到了正确的输出,而其他行没有?
我的第二个问题是:如何更正错误的代码(使它们输出真正的字符,而不是以“x”开头的代码)?
谢谢大家!!
>>> str('中文')
将返回'\xe4\xb8\xad\xe6\x96\x87'
而不是"中文"
如同print("中文")
。 - Cloudstr('中文')
返回'中文'
,因为它已经是一个str
,所以调用str
对它没有任何影响。如果你的源编码是 UTF-8,那么它恰好是与'\xe4\xb8\xad\xe6\x96\x87'
相同的字符串,但它永远不会以反斜杠转义的形式 _打印出来_。但是,如果你在交互式解释器中评估一个值,解释器会显示该值的repr
,而不是该值本身。 - abarnert