Symfoware

Symfowareについての考察blog

FreeBSD 10 + Pythonで「UnicodeEncodeError: 'ascii' codec can't encode characters」

Python 2系を触っているとおなじみなのですが、
日本語を出力しようとすると、よくこんなエラーになります。


  1. # -*- coding:utf-8 -*-
  2. print '日本語を出力'
  3. print u'日本語を出力'




# python sample.py
日本語を出力
Traceback (most recent call last):
File "sample.py", line 4, in <module>
    print u'日本語を出力'
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)




str型は良いのですが、unicodeオブジェクトの出力に失敗します。

手っ取り早く修正するには、こちらが参考になります。
Pythonのエンコーディングでよくはまるのでメモ


  1. import sys, codecs
  2. sys.stdout = codecs.getwriter('utf-8')(sys.stdout)



これを追加。


  1. # -*- coding:utf-8 -*-
  2. import sys, codecs
  3. sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
  4. # print '日本語を出力' # 今度はこれがエラーになる
  5. print u'日本語を出力'
  6. print unicode('日本語を出力', 'utf-8')




今度はstrの出力でエラーになるので、unicodeオブジェクト出力に
統一してやる必要があります。
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/11/03(月) 15:01:16|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<FreeBSD 10 に MeCab + Pythonバインディングをインストールする | ホーム | OpenCV 写真に特定の人物が写っているか判定 その2>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1527-828d5f25
この記事にトラックバックする(FC2ブログユーザー)