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 モジュールが読み込まれていると効果がないので、早く直して欲しい。