マイナビ連載中の【ゼロからはじめるPython】ですが、20回目「2行で作るPythonカレンダー」で紹介しているHTMLカレンダーの挙動がWindowsで異なることがあるとご報告がありました。そこで、検証してみると、確かに、日本語でヘッダが表示されません。そこで、プログラムの冒頭にロケール設定を記述すると、正しく日本語で月火水・・・と表示されるようになりました。

以下のように冒頭にロケール設定を記述すると良いようです。

# 日本語にロケールを設定する
import locale
locale.setlocale(locale.LC_ALL, 'ja_JP')

# 日本語のカレンダーを作る --- (*1)
import calendar

lc = calendar.HTMLCalendar()
body = lc.formatyear(2018, width=4)

# HTMLのヘッダとフッタを指定 --- (*2)
html = """<html><head><style>
table { padding: 8px; }
th { border-bottom: 1px solid gray; }
td { padding: 4px; vertical-align: top; }
.sun { color: red; }
.sat { color: blue; }
</style></head><body>""" + body + """
</body></html>"""

# ファイルに保存 --- (*3)
f = open("calendar2018.html", "wt")
f.write(html)