37

テキスト ファイルの読み取り中にこのエラーが発生し続けます。それを処理/無視して続行することは可能ですか?

UnicodeEncodeError: 'charmap' コーデックは位置 7827 のバイト 0x81 をデコードできません: 文字は未定義にマップされます。

4

3 に答える 3

69

Python 3 では、ファイル オブジェクトの作成時に適切なerrors=値 (errors=ignoreまたは などerrors=replace) を渡します (それが -- のサブクラスであると想定し、io.TextIOWrapperそうでない場合は、1 つにラップすることを検討してください!)。また、より可能性の高いエンコーディングを渡すことを検討してcharmapください (よくわからない場合utf-8は、常に開始するのに適しています)。

例えば:

f = open('misc-notes.txt', encoding='utf-8', errors='ignore')

Python 2 では、read()操作は単純にバイトを返します。トリックは、それらをデコードして文字列に変換することです (実際には、バイトではなく文字が必要な場合)。実際のエンコーディングについてより良い推測がない場合:

your_string.decode('utf-8', 'replace')

...未処理の文字を置き換える、または

your_string.decode('utf-8', 'ignore')

それらを単に無視します。

とはいえ、(推測するのではなく)実際のエンコーディングを見つけて使用することをお勧めしutf-8ます。

于 2012-05-07T19:06:54.463 に答える
1

ファイルが UTF8 として解釈されることを確認するために、コーデックを使用してファイルを開く必要があります。

コーデックのインポート
fd = codecs.open(ファイル名,'r',encoding='utf-8')
データ = fd.read()
于 2012-05-07T19:26:11.430 に答える
-4

ええ..あなたはそれをラップすることができます

try:
    ....
except UnicodeEncodeError: 
    pass
于 2012-05-07T19:04:14.867 に答える