Pythonを使用して一連のソースコードファイルを読み取っていて、ユニコードBOMエラーが発生しています。これが私のコードです:
bytes = min(32, os.path.getsize(filename))
raw = open(filename, 'rb').read(bytes)
result = chardet.detect(raw)
encoding = result['encoding']
infile = open(filename, mode, encoding=encoding)
data = infile.read()
infile.close()
print(data)
ご覧のとおり、を使用してエンコードを検出しchardet
、メモリ内のファイルを読み取って印刷しようとしています。BOMを含むUnicodeファイルでprintステートメントが失敗し、次のエラーが発生します。
UnicodeEncodeError:'charmap'コーデックは位置0-2の文字をエンコードできません:
文字は<undefined>にマップされます
デフォルトの文字セットを使用してBOMをデコードしようとしていて、失敗していると思います。これを防ぐために文字列からBOMを削除するにはどうすればよいですか?