私はPython 3プログラムに情報を詰め込んだテキストファイルでいくつかの操作をさせようとしています。しかし、ファイルを読み込もうとすると、次のエラーが発生します。
トレースバック(最新のコールが最後)
ファイル "SCRIPT LOCATION"、行番号、text = file.read()
デコード中のファイル "C:\ Python31\lib\encodings\cp1252.py"、23行目return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap'コーデックは、位置2907500のバイト0x90をデコードできません:文字は<undefined>
にマップされます
誰かが私にこの問題を乗り越えるための手助けをすることができたら私は最も感謝するでしょう。
問題のファイルはCP1252
エンコーディングを使用していません。別のエンコーディングを使用しています。どちらを自分で把握する必要があります。一般的なものはLatin-1
とUTF-8
です。 0x90 は実際にはLatin-1
内では何も意味していないので、UTF-8
(ここで 0x90 は継続バイト)の方が一般的です。
ファイルを開くときにエンコーディングを指定します。
file = open(filename, encoding="utf8")
@LennartRegebroの拡張として、答えは:
それがどんなエンコーディングであるのかわからず、上の解決法がうまくいかない(それはutf8
ではない)そしてあなたがただ推測するだけであることに気づいたなら - オンラインツール エンコーディングが何かを識別するために使うことができる。完璧ではありませんが、通常はうまく機能します。エンコーディングを考え出したら、上記の解決策を使用できるはずです。
編集:(コメントからコピーされた)
非常にポピュラーなテキストエディタSublime Text
は、エンコーディングが設定されていればそれを表示するコマンドを持っています...
View
- > Show Console
(または Ctrl+`)view.encoding()
のフィールドに入力して、最高のものを期待してください(私はUndefined
以外に何も手に入れることができませんでしたが、多分あなたはもっと幸運になるでしょう...)file = open(filename, encoding="utf8")
が機能しない場合のために追加するためだけにfile = open(filename, errors='ignore')
を試してください
または、ファイルをWebサイトにアップロードするなど、ファイルをデコードする必要がない場合は、open(filename, 'rb')
。 r =読み取り、b =バイナリ