Trac-0.11.1.ja1入れました。以下の現象が起きました。
現象
mime_encoding の指定が間違えていると、以下のエラーが発生します。本来ならログに吐かれるだけで済むはずです。
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-18: ordinal not in range(128) Python Traceback Most recent call last: File "/.../Trac-0.11.1.ja1-py2.3.egg/trac/web/main.py", line 424, in _dispatch_request File "/.../Trac-0.11.1.ja1-py2.3.egg/trac/web/main.py", line 198, in dispatch File "/.../Trac-0.11.1.ja1-py2.3.egg/trac/ticket/web_ui.py", line 171, in process_request File "/.../Trac-0.11.1.ja1-py2.3.egg/trac/ticket/web_ui.py", line 389, in _process_newticket_request File "/.../Trac-0.11.1.ja1-py2.3.egg/trac/ticket/web_ui.py", line 974, in _do_create
対応
以下のようにパッチあてました。
# diff -u web_ui.py.orig web_ui.py --- web_ui.py.orig 2008-08-27 13:01:58.000000000 +0900 +++ web_ui.py 2008-08-27 13:18:08.000000000 +0900 @@ -1002,7 +1002,7 @@ tn.notify(ticket, newticket=False, modtime=now) except Exception, e: self.log.exception("Failure sending notification on change to " - "ticket #%s: %s" % (ticket.id, e)) + "ticket #%s: %s" % (ticket.id, unicode(e).encode("utf8"))) # After saving the changes, apply the side-effects. for controller in controllers:
解説
エラーメッセージが日本語になったようです。が、ログをとる部分のコードがunicodeを意識してないので落ちていました。*1
メールのエンコーディング設定が無効です: iso-2022-jp
翻訳は util/translation.py でしてます。
'Invalid email encoding setting: %(str)s': 'メールのエンコーディング設定が無効です: %(str)s',
*1:今回はエラーあったとこしかなおしてないので、他のExceptionをログに吐く部分もヤバい気がします。