1. ホーム
  2. windows

[解決済み] UnicodeDecodeError: 'charmap' コーデックは、位置YのバイトXをデコードできません:文字は<undefined>にマップされます。

2022-02-01 18:20:28

質問

Python 3 のプログラムで、情報の詰まったテキストファイルに対して何らかの操作をさせようとしています。しかし、ファイルを読み込もうとすると、以下のようなエラーが発生します。

 Traceback (most recent call last):  
     File "SCRIPT LOCATION", line NUMBER, in <module>  
     `text = file.read()`  
     File "C:\Python31\lib\encodings\cp1252.py", line 23, in decode  
     `return codecs.charmap_decode(input,self.errors,decoding_table)[0]`  
     UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 2907500: character maps to `<undefined>`  

解決方法は?

当該ファイルでは CP1252 エンコーディングになります。別のエンコーディングを使っているのです。どれを使うかは、自分で考えなければなりません。よくあるのは Latin-1UTF-8 . このため 0x90 では実際には何の意味もありません。 Latin-1 , UTF-8 (ここで 0x90 は継続バイト)の方が可能性が高い。

ファイルを開くときにエンコードを指定します。

file = open(filename, encoding="utf8")