【Python】SyntaxError: Non-UTF-8 code starting with ~

Python

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 ~」について原因と回避方法を紹介しました。

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