PyGTK2からPyGI GTK3への移行(2)

いやー, 思わぬ部分で落とし穴にはまって時間を使ってしまいました. とりあえず再現コードを見て下さい.

まずはpygtkの場合です. Pythonを起動して次のコードを入力してみて下さい.(あれっ, エラーになりませんね. 理由は最後の部分で分かります.)

>>> import sys
>>> print sys.getdefaultencoding()
>>> import gtk
>>> print str(u'日本語')
>>> print '{0}'.format(u'日本語')
>>> print sys.getdefaultencoding()

次にpygiの場合です. 新しくPythonを起動し直してから次のコードを入力してみて下さい.(こちらの動作が普通ですよね.)

>>> import sys
>>> print sys.getdefaultencoding()
>>> from gi.repository import Gtk
>>> print str(u'日本語')
>>> print '{0}'.format(u'日本語')
>>> print sys.getdefaultencoding()

正直「やられたっ」という感じです.(悪いのは気付かなかった自分なんですが :-p)

ninix-ayaの中にUnicode文字列が来る場合があるにも関わらずstr(), str型のformatメソッドを使っている部分が残っていたのですが, import gtkした事でデフォルトのエンコーディングが’utf-8’になったために問題が表面化しなかったのです.

修正する必要がある箇所を探すのが大変そうです. 🙁

2011/12/17追記: プラグイン「お天気やん」も修正が必要ですね. :-p
2011/12/18追記: プラグインを作る(6)の記述を訂正しました.
2011/12/19追記: ↑再度訂正しました. BasePluginクラスとninix-aya本体で文字コードの処理を受け持ち, プラグインの使う文字コードはUnicodeにします.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です