[Python-ml-jp 3249] unicodeを含む文字列のprint

Tatsuya Kobayashi tatsuyak @ e-mail.ne.jp
2005年 3月 28日 (月) 19:32:26 JST


初めまして。小林と申します。
Pythonはまだリファレンスブック片手の初心者です。

現在、pythonを使用した簡単なスクリプトを作成していますが、以下のよ
うな問題で悩んでます。ml書庫を探した限りでは解決の糸口が掴めなかっ
たので、教えていただければと思います。

具体的にはunicode文字列をprintするとき、ターミナルでは正常に動作
するのですが、ファイルにリダイレクトしようとするとエラーとなります。

たとえば他人のプログラムで申し訳ありませんが、
http://www.unixuser.org/~euske/python/index-j.html
にある新山さんの encdet.py をターミナルシェル上で実行すると問題な
く動作しますが、

$ python ./encdet.py > foo

とすると(メールの都合上折り返してます。)

Traceback (most recent call last):
  File "./encdet.py", line 338, in ?
    test_suite(); sys.exit(0)
  File "./encdet.py", line 326, in test_suite
    test(u"\uffff\uffff\uffff\uffff\uffff\u0242\uffff\uffff\uffff",
["japanese.euc_jp", "japanese.ms932", "utf8"])
  File "./encdet.py", line 308, in test
    print "try '%s' in %s (%s)" % (s0, enc1, " ".join(map(lambda
c:"%02x" % ord(c), s)))
UnicodeEncodeError: 'ascii' codec can't encode characters in position
5-9: ordinal not in range(128)

のようにunicodeを含む文字列をprintするところでエラーとなってしまいます。
これはなぜでしょうか?

実行環境は FedoraCore3 + python2.3.4 及び NetBSD2.0 + python2.4
で確認してみました。

うまくドキュメントが読めていないのかもしれませんが、解決のポインタ
など教えていただけると幸いです。

以上、よろしくお願いいたします。

-----------------------------------------------------------------------
Tatsuya Kobayashi / e-mail:tatsuyak @ e-mail.ne.jp
----------------- `God's in his heaven, all's right with the world' ---



Python-ml-jp メーリングリストの案内