コンテンツ
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ファイルを実行すると、エラーが解決できました。