せっかく統合開発環境のPyCharmを使っているのにデバッグの結果の見方がわからない、と思っていたらそれはUnicodeDecodeErrorというエラーがでていたのでした。
文字コードの定義がないとデバッグ時にUnicodeDecodeErrorがでる
デフォルトでは、 Python のソースコードは UTF-8 でエンコードされているものとして扱われます。Python 3.3.3 ドキュメントにこう書いてあったのでいままで文字コードの定義は省いていました。
2.2.3. ソースコードの文字コード
ところが文字コードの定義をせずに日本語を使っているとUnicodeDecodeErrorがでることに気づきました。
日本語があるのがコメントだけであっても状態でもダメです。
とりあえずコメントであってもpyファイルの中のどこかに日本語がある状態で をクリックしてデバッグさせると_pydev_execfile.pyが開いて35行目のstream.close()がハイライトされます。
意味がわからず長らく(もう4ヶ月も)放置していたのですが、そろそろデバッガなしでは変数の中身を想像してのデバッグがしんどくなってきたので調べてみました。
python - UnicodeDecodeError in PyCharm debugger - Stack Overflow
調べてみたというかたまたま最近このQ&Aをみつけたので原因がわかったのでした。
Python3.xインタプリタはデフォルトでエンコードをUTF-8と解釈してくれるので文字コードの定義を省略しても問題は起こりませんが、PyCharmでは文字コードの定義が必要とのことでした。
確かにデバッグツールウィンドウのVariablesのところにUnicodeDecodeErrorがでていますね。
そのあとにcp932というのがみえるのでWindowsのデフォルトのエンコードで解釈しようとして失敗しているようです。
余談ですが、Windows7 64bitではメモ帳はUTF-8を正しく表示してくれますが、ワードパッドは文字化けします。
# -*- coding: utf-8 -*-pyファイルの1行目か2行目にこの文字コードの定義を書くとちゃんとPyCharmでデバッグされました。
PyCharm3.0.2を3.1.3にアップデートしても文字コードの定義が必要なことに変わりはありませんでした。
これからちゃんと文字コードの定義を書こうと思います。
参考にしたサイト
2.2.3. ソースコードの文字コード
Python3.xではデフォルトでUTF-8のエンコードですがちゃんと定義しておいたほうがよいようです。
debugging - HOW TO use Pycharm to debug python script? - Stack Overflow
日本語が入っているファイルをPyCharmでデバッグするときは文字コードの定義が必須です。
Getting Started with PyCharm - PyCharm - Confluence
PyCharmの基本的な使い方の解説。
0 件のコメント:
コメントを投稿