2016年2月25日木曜日

powershell で作成したファイルに BOM が入っていて困った

仕事で必要になったファイルを作成するため、 powershell で元ファイルから対
象行を抽出して新しくファイルを作成しました。
作成したファイルを Python で入力ファイルに使うと、1行目行頭にゴミのよう
なものが存在するため思うような処理をしてくれません。文字コードは UTF-8
で合わせているのだけれど……?

バイナリエディタでファイルを覗いてみると、行頭に 0xEF 0xBB 0xBF のデータ
が存在します。BOM でした。

BOM [Byte Order Mark] IT用語辞典

powershell 側で BOM 無しでファイルを書き込むことはできないようなので、
Python 側でコーデックを "utf_8_sig" BOM 有りでファイルを読めばうまくいき
ました。

f = codecs.open(in_file, 'r', 'utf_8_sig')

やっぱ Python は良いね。

0 件のコメント :

コメントを投稿