Windowsの対話型実行環境で、あらかじめ作成したスクリプトを読み込んで実行しようとして、このようなエラーメッセージができることがある。これは、ファイルの文字コードを正しく指定していないことが原因。Windows版はShift_JISであることを前提に動作しているため、UTF-8で保存されたファイルとそのまま読み込もうとすると、このエラーメッセージが表示される。
以下は、以下の2行からなるスクリプトを作成してShift_JISでprintsjis.py、UTF-8でprintutf-8.pyとして保存しておく。
print('セナディア役の鈴木みのりさん、かわいい。')
print('リフ役の瀬戸麻沙美さん、かわいい。')
対話型実行環境を起動し、それぞれのスクリプトを読み込んで実行する。ファイルの文字コードを指定しないとShift_JISとして読み込むため、encodingオプションを使用して文字コードを指定して読み込んでいる。
>python
Python 3.11.7 | packaged by Anaconda, Inc. | (main, Dec 15 2023, 18:05:47) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exec(open('printsjis.py').read())
セナディア役の鈴木みのりさん、かわいい。
リフ役の瀬戸麻沙美さん、かわいい。
>>> exec(open('printutf-8.py').read())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'cp932' codec can't decode byte 0x○ in position ○: illegal multibyte sequence
>>> exec(open('printutf-8.py', encoding = 'UTF-8').read())
セナディア役の鈴木みのりさん、かわいい。
リフ役の瀬戸麻沙美さん、かわいい。