16

私はこのmyfileを持っています(これを貼り付けました。問題のある関連データがコピー/貼り付けで生き残っていることを願っています)。私はそのファイルを読み込もうとします:

import codecs
codecs.open('myfile', 'r', 'utf-8').read()

しかし、これは次のようになります。

UnicodeDecodeError: 'utf8' codec can't decode byte 0xe5 in position 7128: invalid continuation byte

ファイルを確認すると:

» file myfile
myfile: C source, ISO-8859 text
  • そのようなファイル (ISO-8859) を Python で読み取るにはどうすればよいですか?
  • 一般的に、ファイルがどのようにエンコードされているかを知るにはどうすればよいですか?

多くの場合、自分で生成したのではないファイル (システム ファイル、インターネットからダウンロードしたランダム ファイル、プロバイダーや顧客から提供されたランダム ファイルなど) を扱っています。使用しています。多文化環境 (ヨーロッパ) にいるため、これらのファイルがどのようにエンコードされているかを知ることは困難です。ほとんどの場合、ファイルを提供する人でさえ、選択したエディター/ツールによって舞台裏で発生している可能性があるエンコーディングについての手がかりがありません。ファイルごとに使用されているエンコーディングを確認するにはどうすればよいですか?

4

2 に答える 2

27

Python 3.3 では、組み込みの open 関数を使用できます。

open("myfile",encoding="ISO-8859-1")
于 2014-04-27T08:54:48.183 に答える
19

open()コマンドでコーデックを変更します。ISO-8859 標準には複数のコーデックがあります。ここでは Latin-1 を選択しましたが、別のコーデックを選択する必要がある場合があります。

codecs.open('myfile', 'r', 'iso-8859-1').read()

有効なコーデックのリストについては、codecsモジュールを参照してください。パスティー データから判断すると、iso-8859-1 はスカンジナビア語のテキストに適しているため、使用する正しいコーデックです。

通常、他のソースがなければ、ファイルが使用するコーデックを知ることはできません。せいぜい、あなたは推測することができます(それは何ですかfile)。

于 2013-06-02T14:00:30.357 に答える