ISO-8859-1エンコーディングを使用してUTF-8でエンコードされたファイルByte Order Markを開いているようです(おそらくこれはOSのデフォルトのエンコードであるためです)。
あなたはバイトとしてそれを開くと、最初の行を読めば、あなたはこのようなものが表示されるはずです。
>>> next(open('pi_million_digits.txt', 'rb'))
b'\xef\xbb\xbf3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679\n'
... \xef\xbb\xbf
は、BOMのUTF-8エンコーディングです。
>>> next(open('pi_million_digits.txt', encoding='utf-8'))
'\ufeff3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679\n'
ストリップに:UTF-8など
>>> next(open('pi_million_digits.txt', encoding='iso-8859-1'))
'3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679\n'
...と開口部には、実際のBOM文字U + FEFFを示しています。ISO-8859-1としてオープン、それは何を取得しているように見えます上記の例のnext()
の使用は単なるデモンストレーション用である
>>> next(open('pi_million_digits.txt', encoding='utf-8-sig'))
'3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679\n'
:マークアウトは、特殊なエンコーディングutf-8-sig
を使用しています。あなたのコードでは、open()
行に引数encoding
を追加するだけです。
with open(filename, encoding='utf-8-sig') as file_object:
# ... etc.
ファイルが壊れている可能性があります。 –
私はテキストエディタでファイルを見ましたが、それは正常に見えますか?テキストエディタで正常に見えるかもしれませんが、まだ壊れていますか? – Bazman