bodyにutf-8で渡せばいいみたいですね。
日本語が入っている場合に、内部で自動的にiso-2022-jpのメールとするようです。
subjectに日本語が入っている場合もBエンコーディングしてくれました。
2008/9/21 kazuto <gka...@gmail.com>:
--
/*
Atsushi Odagiri
http://blog.aodag.jp
mailto:aod...@gmail.com
*/
> body = db.Text(unicode(msg,'iso2022_jp'))
これでも、utf-8になるんですね:-)
pythonは、通常の文字列と、ユニコード文字列が明確に区別されています。
ユニコード文字列は、unicodeコンストラクタを使って作ります。
unicode(msg,'iso2022_jp')というのは、iso-2022-jpでエンコードされているバイト列からユニコードを作成しています。
ここから逆にutf-8の文字列を取得するには、encodeメソッドを使います。
kazuto様の場合は、以下のようにすればよいと思います。
body = unicode(msg, 'iso-2022-jp').encode('utf-8')
ただし、上記のようにすると、iso-2022-jp専用になってしまうので、emailモジュールを使って、メッセージをパースして、文字コードを取得した方がより汎用的だと思います。
pythonでも日本語の取り扱いについては、以下が参考になると思います。
http://www.python.jp/Zope/articles/japanese/Python4Japanese-2
以上。
2008/9/21 kazuto <gka...@gmail.com>:
--