我正在尝试查看时区名称。所以这是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时实际发生了什么?如何获得正确的输出?
答案 0 :(得分:2)
我一开始并不想回答这个问题,但在我写完整个问题之后,我找到了答案,所以我把它写下来。
原因是它没有使用正确的编码,其中应使用gbk
但Python选择了latin-1
。这证明了这一点:
>>> print(a.encode('latin-1').decode('gbk'))
中国标准时间