Pythonスクリプトを実行すると、以下のようなエラーメッセージに遭遇することがあります。
D:\Sample\Python>python sample.py
SyntaxError: Non-UTF-8 code starting with '\x83' in file D:\Sample\Python\sample.py on line 1, but no encoding declared; see https://peps.python.org/pep-0263/ for details
本記事では、上記エラーメッセージの原因と対処方法について紹介します。
エラーの原因
このエラーは、Python3において、スクリプトのファイルがUTF-8以外のエンコーディングで保存されているにも関わらず、ファイルの先頭にエンコーディング宣言がない場合に発生します。
Python 3では、デフォルトのソースコードのエンコーディングはUTF-8です。Pythonスクリプトのファイルの先頭にエンコーディング宣言がない状態でSJISとして保存し、ファイル内に日本語のコメントや文字列が存在する場合、上記のエラーが発生します。
エラーの回避方法
PythonスクリプトのファイルをUTF-8で保存する
スクリプトファイルの文字コードをPython3のデフォルトであるUTF-8に合わせます。お使いのテキストエディタでファイルを保存する際にUTF-8を指定してください。
また、スクリプトがPython2環境でも動作するよう、ファイル先頭に以下の宣言を記述することをお勧めします。Python2のデフォルトエンコードはASCIIのため、Python2環境では、これを書かないとUTF-8で保存したファイルであってもエラーが発生します。
#coding: UTF-8
まとめ
本記事では、Pythonで発生するエラー「SyntaxError: Non-UTF-8 code starting with ~」について原因と回避方法を紹介しました。