この記事では、PyCharmにおける特定のエラーについての状況とその解決策の一つをご紹介します。
急に文字化けしてエラーがでるようになった!という状況。
もしも同じ状況で困っている方がいらっしゃいましたら、参考になれば幸いです。
状況について
PyCharmを使っていて、ある日突然、
Fatal Python error: init_stdio_encoding: failed to get the Python codec name of the stdio encoding
Python runtime state: core initialized
LookupError: unknown encoding: windows-31j
Current thread 0x00002bd0 (most recent call first):
<no Python frame>
というエラーが出てしまい、ファイルが実行できなくなりました。
さらに、日本語表記のテキストファイルなどが文字化けするようになってしまいました。
しかし、メモ帳などのテキストエディタでファイルを開くと問題ありません。
文字コードの問題だということは理解していますが、PyCharmの右下の設定を確認しても「UTF-8」となっているので問題ないはず。
原因によって解決策は異なると思いますが、一つの解決策としてご覧ください。
エラーの解決策①「encodingの記述」
開発環境に関係なく、スクリプト内で解決する方法があります。
今回、with openでファイルを指定してログを記録していたのですが、引数内にエンコードを指定することができます。
これによって、以降に実行したログは日本語でもエラーが出ませんでした。
おそらく、ログの文字化け対策としては、この方法が一番間違いなく確実だと思います。
ただし、冒頭の「Fatal Python error: init_stdio_encoding」はPythonインタプリタの起動時(スクリプトが実行される前)に発生するエラーのため、スクリプト内のencoding指定では解消できません。その場合は次の②の設定変更が必要です。
ただし、これ以前に実行したログは文字化けしたままです。
エラーの解決策②「PyCharmの設定」
今度は開発環境(PyCharm)の設定を確認します。
左上のメニュー File → Settings 、または Ctrl + Alt + S キー で設定画面を出し、左側「Editor」内の「File Encodings」を開くとエンコードの設定を表示できます。
ここで<System Default: windows-31j>のところを「UTF-8」に変更。
またファイルやプロジェクトごとに設定されている場合はこれを削除すればOK。
(一覧から選択して「-」をクリック)
ただし、ログを記録するスクリプト内に上記①のエンコード指定を記述しなければ根本的な解決にはなりません。
この記事で解決できないこと
上記はあくまで「これから記録する文字」に対する設定を変更したにすぎません。
これ以前に実行した結果(ログ)は文字化けしたままになります。
まとめ
これでも解決しないという場合、フォームかコメントでお知らせください。
当ブログでは、エラー解決方法も積極的に記事にしています。
今後もPythonを中心としたプログラミングの情報をお届けします。
Pythonの演習はこちら ▶
Python を基礎から学びたい方へ:筆者が運営する無料の入門コース「作って学ぶPythonプログラミング入門 」を用意しています。最初の4レッスンは登録なしで読めます。
それでは、ステキなPythonライフを!
Pythonについて詳しく知りたいという方は、こちらの書籍もおススメです。
リンク
リンク
リンク