[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 メーリングリストの案内