Pycharmで「LookupError: unknown encoding: windows-31j」が出た時の対処法

code coder coding computer Python
Photo by Pixabay on Pexels.com

今回もPython勉強中に起こったエラーの対処法について備忘録として書いておきます。
ちなみに今回のエラーは急に発生したため根本原因は全くわかりませんでした。

まずは、エラーが発生した時の環境からです。

環境

エラー発生時の環境は以下になります。

  • Windows10
  • PyCharm 2020.3 (Community Edition)
    Build #PC-203.5981.165, built on December 2, 2020
  • Python 3.8.1

エラー内容

続いて発生したエラーは次の内容です。
発生するタイミングは、Pycharmを使ってPythonファイルを実行した時に必ず発生しました。

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 0x000022d4 (most recent call first):
<no Python frame>

コードは以下のようなとても簡単なコードです。

print('test')

このコードで発生したら他のどのコードでも発生しますよね(笑)

原因

まず対処する前に、何が原因で発生しているかを知るためエラー内容を見ると、「LookupError: unknown encoding: windows-31j」とあるので、windows-31jが見れないといってますね。

これは確実にエンコードの問題ですね。

次に同じようなエラーがないかをググってみました。
全く同じ問題の記事を発見しましたっ!

PyCharmで Fatal Python error: Py_Initialize: can’t initialize sys standard streams LookupError: unknown encoding: windows-31j が発生する場合の対処

このサイトの対処法を見ると、「PyCharm(IDEA)のインストールディレクトリにあるbin/pycharm.exe.vmoptions(idea.exe.vmoptions)に、(-Dfile.encoding=UTF-8)を加える。」とあるので、自分の環境にある「pycharm.exe.vmoptions」に「-Dfile.encoding=UTF-8」を追加し、念のため再起動しました。

よしっ!これで直ったっ!と思い、Pycharmをもう一度実行!

・・・同じエラーが出る。。

記事の更新日を見ると、2015年の記事。そしてサイトをよく見ると2015年11月11日にPycharm側で修正されている。。。

これじゃなかった。。。

他のサイト見ても解決策がないので自分で探すしかない。。

エラーからしてエンコーディングの問題なんだからPycharmの設定見ればいんじゃねぇと思い設定を見ていたころついに見つけました!!

問題の原因は予想した通り、エンコーディングの設定が「Windows-31j」になっていたことでした。

そして、設定を変更したところ問題解消っ!!

対処法

というわけで前置きが長くなりましたが対処法について書きます。

対処法:Pycharmのエンコーディングの設定を「UTF-8」に変更する。

具体的な手順は以下になります。

手順
  1. Pycharmを開いて、左上の「File」を選択
  2. Settings>Editor>File Encodings>Project Encoding>「UTF-8」に変更
  3. Properties Files(*.properties)>「UTF-8」に変更
  4. 「OK」を押して、プログラムを実行

以上が手順になります。
なぜか手順2,3のPycharmの設定が「windows-31j」になってました。

最初に書きましたが、こんな設定は一切触っていないのでなぜこうなったのかが不明です。。
きっと勉強に使った何かしらのファイルをインストールした時に勝手に設定変更されたのだろうと思うことにしました。

あぁ。結構無駄な時間を使ってしまった。

まとめ

最後まとめです。

  • 「LookupError: unknown encoding: windows-31j」が出たらエンコードの設定を変更しよう
  • ググっても見つからない場合は、エラーから推測してみる

今回は以上となります。ありがとうございました。

コメント

タイトルとURLをコピーしました