間違いだらけの備忘録

このページの内容は無保証でありこのページの内容によって直接、または間接に損害を受けられたとしても私は責任を取りません。

PythonのUnicodeEncodeErrorを知る

http://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html

環境はUNIX上のPython 2.4, 2.5を想定しています。
(中略)
回避方法:sys.stdoutやファイルオブジェクトを直接使わないようにする

上記の問題点を回避するためには、(中略)unicode型を渡さず、str型に変換してから渡す、というのが無難な方法

安心してprintにunicode型を渡したい場合には、生のsys.stdoutではなく、streamwriterで


import sys, codecs
sys.stdout = codecs.EncodedFile(sys.stdout, 'utf_8')  

として、sys.stdoutをラップしてしまう方法が考えられます。

めも

sys.stdoutをファイルオブジェクトに差し替えれば、この方法は、ファイルオブジェクトでも使うことができます。

f = open('fairu', 'w')
f = codecs.lookup('utf_8')[-1](f)
f.write(u"日本語") 

めも、未評価
参考
http://d.hatena.ne.jp/kobakoba0723/20110327/1301211138

このページにはhatena以外のサービスからのコンテンツが埋め込まれています。 hatenaによりGoogle AdSense 広告が埋め込まれています。