pythonのデフォルトエンコーディングをUTF-8に変更する
こんなエラーが出る
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 107:
どうも調べてみると、Pythonのデフォルトエンコーディングはなんと「ascii」!頼むから死んでくれ
sitecustomize.pyというファイルに以下を追記すればおk
import sys sys.setdefaultencoding('utf-8')
問題はsitecustomize.pyがどこにあるか一概にいえない点。Ubuntu14.04だと/etc/python2.7/sitecustomize.pyだったけどsudo find / -name sitecustomize.py
したほうが吉
最後に確認
import sys sys.getdefaultencoding()
日本語を含む変数をprintしようとすると文字化けする
PHPでいうvar_dump
、Rubyでいうならp
orpp
に該当するメソッドはどうやらPythonにはないらしい
>>> print ['あ', 'い', 'う'] ['\xe3\x81\x82', '\xe3\x81\x84', '\xe3\x81\x86']
どうもPython2.xの仕様とのこと。死にかけていたところに以下のサイトを発見
Pythonで日本語を含んだリストと辞書をpretty printしたい件 | taichino.com
リンク先より
sudo easy_install prettyprint
使うときは以下のようにすると
# -*- coding: utf-8 -*- from prettyprint import pp, pp_str pp(['あ', 'い', 'う'])
綺麗に出力される
user@ubuntu:/tmp$ python a.py [ "あ", "い", "う" ]