pythonで入力ファイルにおける文字コードが正しく認識されない場合、以下のようなエラーがでる。
UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0x98 in position 8107: illegal multibyte sequence
このエラーはUTF-8のファイルをcp932で読み込む場合に起きやすい。
対応法方法としては2つある。
- 入力ファイルをSJISに変換
- 入力ファイルをbinaryモードで読み込み、適切なdecodeをかける。
2は例えば以下のようなコードになる。
messages = [line.decode(‘utf-8’).rstrip() for line in open(‘smsspamcollection/SMSSpamCollection’, ‘rb’)]