time.tznameが文字化けしてるんだが
time.tzname の値がおかしい。
# Python 3.4.3 on Win32 import sys import time print(time.tzname[0], file=sys.stderr) # ==> \x93\x8c\x8b\x9e (\x95W\x8f\x80\x8e\x9e)
化けてますねー (わざわざ sys.stderr に出力したのは、例外で落ちないようにするため)。
この類の文字化けは Python 2.x 時代に見たことがある。文字コードが変換されないまま、内部文字列になってしまっているやつだ。
とりあえず、こうすれば元に戻せるが、
print(time.tzname[0].encode('raw_unicode_escape').decode('shift_jis')) # ==> 東京 (標準時)
バグが直ったら動かなくなるな。
そもそも、どこでバグっているのか調べると、ロケールに依存した関数 mbstowcs を使っているのを見つけた。
それなら import time する前に setlocale すれば化けないはず。
import locale locale.setlocale(locale.LC_ALL, '') import time print(time.tzname[0]) # ==> 東京 (標準時)
ただ、プログラムを実行した時点で既に time モジュールが読み込まれていると効果がないので、早く直して欲しい。