Python実行時に発生した「UnicodeDecodeError: 'cp932' codec can't decode byte 0x83」の対象についてです!
ちょっと無理くりな方法かも知れませんが、とりあえず対処できました。
エラーメッセージ
コンソールでpythonしようとすると、こんなエラーが出ていた。
D:\work\heroku\lztestpy>python Python 3.6.6 |Anaconda 4.3.1 (64-bit)| (default, Jun 28 2018, 11:27:44) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. Failed calling sys.__interactivehook__ Traceback (most recent call last): File "C:\Users\lis\Anaconda3\lib\site.py", line 410, in register_readline readline.read_history_file(history) File "C:\Users\lis\Anaconda3\lib\site-packages\pyreadline\rlmain.py", line 165, in read_history_file self.mode._history.read_history_file(filename) File "C:\Users\lis\Anaconda3\lib\site-packages\pyreadline\lineeditor\history.py", line 82, in read_history_file for line in open(filename, 'r'): UnicodeDecodeError: 'cp932' codec can't decode byte 0x83 in position 125: illegal multibyte sequence >>>
エラー内容
C:\Users\lis\Anaconda3\lib\site-packages\pyreadline\lineeditor\history.py
これの82行目で発生しているらしい。
これです。
for line in open(filename, 'r'):
で、改めてエラーメッセージを見てみます。
UnicodeDecodeError: 'cp932' codec can't decode byte 0x83
ということで、どうやらこのエラーは文字コードが原因のものです。
「CP932」というのが、Windowsのデフォルト「Shift-JIS」ですね。 でUnicodeのデコードエラーとなっています。
恐らくPythonの関係なので、UTF-8のものを開こうとする。 しかしエンコーディングの指定がないので、Windows的には「Shift-JIS(CP932)」で開こうとする。
コンソール:「なんか変なんだけど!うまく開けないんだけど!」
という感じになっているものと思われる。
対処
ということで対処です。
エラーが発生していた箇所であるopen()に、エンコーディングを設定してあげます。
for line in open(filename, 'r', encoding="utf-8"):
これでPythonを実行してみると……
D:\work\heroku\lztestpy>python Python 3.6.6 |Anaconda 4.3.1 (64-bit)| (default, Jun 28 2018, 11:27:44) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
エラーでなくなった!
とはいえ、決め打ちでUTF-8を指定してしまっているので、これが正しいかは不明です。
あとがき
Python実行時に出る文字コードエラーの対処についてでした!
ちょっと無理くりな感じですが……
とりあえずまぁ大丈夫でしょう。
コレをやったことによる弊害が出たら、ちょっと別途検討しよと思いますー。