[Python] Cursesプログラムで日本語が文字化けする場合は、locale.setlocale(locale.LC_ALL, "")する。

環境

この記事の内容は、Ubuntu Linux 6.10, Python 2.4.4で確認しました。

問題

cursesモジュールを使ったスクリプトで、ウィンドウに日本語をaddstrすると、文字化けする。

解決方法

addstrする前に、以下を実行します。

import locale
locale.setlocale(locale.LC_ALL, "")

詳細

同じCursesプログラムでも、Ubuntu Linux(やDebian)のパッケージ管理システムのaptitudeや、メーラのMuttでは、日本語が正常に表示されています(これらはC言語で書かれていますが)。そこで、環境の設定が不足しているのが問題ではないかと思い、これらのソースコードの初期化部分を読んでいったところ、両者ともにsetlocaleしていることが分かったので、Pythonでも同じことをしてみたところ、解決されました。