PythonでUTF-8 BOM付きのファイルを扱う場合、エンコードを ‘utf_8_sig’ と指定します。以下にその使用例を示します。
import io
with io.open('filename.txt', 'r', encoding='utf_8_sig') as f:
print(f.readlines())
このコードは、UTF-8 BOM付きのファイルを開き、その内容を表示します。
UTF-8にはBOM (Byte Order Mark)が付く場合があります。これはエンコードがUTF-8であることを示す識別子です。ファイルの先頭3バイトが ‘EF BB BF’ となっています。
しかし、BOMがあるUTF-8と、無いUTF-8が存在します。UTF-8にBOMを付けるのは、Windowsのメモ帳やExcelです。一方、LinuxやMacは基本的にBOM無しUTF-8で扱います。
したがって、PythonでUTF-8 BOM付きのファイルを扱う際には、上記のように ‘utf_8_sig’ を指定することで、BOM付きの場合はスキップして読み込み、BOM無しの場合はそのままUTF-8として読み込むことが可能です。
この情報がPythonでUTF-8 BOM付きのファイルを扱う際の参考になれば幸いです。