プログラム&IT教育

SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byteが出たときの解決方法(Python)

スポンサーリンク

SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0x8e in position 0: invalid start byte のエラーが出た!

pythonでプログラムを作っていたところ、タイトルの通りのエラーメッセージが表示されました。私はpython初心者なこともあり、すぐに解決方法がわからなかったのですが、エラーコードの意味から、文字コードが「UTF-8」じゃないよ、というようなエラーになっているのかなと推測していました。

実際には、このサイトの中で使おうと思って以下のプログラムを作り、pythonで実行しようとしたときになります。

# coding: utf-8
	
kuji = 1	
if( kuji == 1 ):	
    	money = 100
elif( kuji == 2 ):	
	money = 200
elif( kuji == 3 ):	
	money = 300
else:	
	money = 1000

print("支払うお金は")	
print(money)	
print("円です。")

SyntaxErrorが出てしまう問題の原因について

問題のエラーが出る箇所は、「print(“支払うお金は”)」というプログラムでした。原因は、文字コードが違うからUTF-8にデコードできません、というものです。

つまり、プログラムの先頭で文字コードを指定して「coding: utf-8」にしているけれど、UTF-8になっていない、ということが原因です。

SyntaxErrorの解決方法 その1 ファイルを「UTF-8」にする

プログラムの中では「UTF-8」に文字コードを指定していますが、UTF-8ではないというエラーが出ますので、作ったプログラムが「UTF-8」になっていないということになります。そのため、ファイルを開いて文字コードを確認します。

今回、「lesson5-1.py」というファイルでエラーが出ていたのですが、パソコンでサクラエディタを使ってファイルを開き、名前を付けて保存を選びます。そのとき、「文字コードセット」という欄があるのですが、ここが「SJIS(shift-jis)」になっていました。そのため、SJISではなく、UTF-8に変更してファイルを保存します。

このあと、pythonファイルを実行すると、エラーが解決できました。

SyntaxErrorの解決方法 その2 プログラムの文字コードを「shift-jis」にする

これはタイトルの通りです。先ほどの説明で、プログラムのファイルとして作成した「lesson5-1.py」の文字コードが「SJIS」になっていました。そのため、このファイルの文字コードは「shift-jis」ですよ、とプログラムに教えてあげることで、エラーは解決します。具体的には、プログラムの先頭部分の# codingのところを変更します。

<変更箇所>

# coding: utf-8

「utf-8」になっている個所を「shift-jis」に変更します。

# coding: shift-jis

このあと、pythonファイルを実行すると、エラーが解決できました。

モバイルバージョンを終了