获取Python3以显示正确的tzname

时间:2014-12-12 12:48:34

标签: python encoding

我正在尝试查看时区名称。所以这是Python2中的代码:

Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import time
>>> time.tzname
('\xd6\xd0\xb9\xfa\xb1\xea\xd7\xbc\xca\xb1\xbc\xe4', '\xd6\xd0\xb9\xfa\xcf\xc4\xc1\xee\xca\xb1')
>>> a = time.tzname[0]
>>> print(a)
中国标准时间   # correct output

到目前为止一切顺利。我的电脑是Windows7,默认编码为gbk

然后我尝试了Python3:

>>> time.tzname
('Öйú±ê׼ʱ¼ä', 'ÖйúÏÄÁîʱ')
>>> a = time.tzname[0]
>>> print(a)
Öйú±ê׼ʱ¼ä

那么在使用Python3时实际发生了什么?如何获得正确的输出?

1 个答案:

答案 0 :(得分:2)

我一开始并不想回答这个问题,但在我写完整个问题之后,我找到了答案,所以我把它写下来。

原因是它没有使用正确的编码,其中应使用gbk但Python选择了latin-1。这证明了这一点:

>>> print(a.encode('latin-1').decode('gbk'))
中国标准时间