import codecs

Pythonを使ってユニコードで書かれたテキストファイルを読みます。エンコーディングUTF-16、BOM付きでリトルエンディアンとします。

f = codecs.open('foo.txt', 'r', 'utf_16_le')
for line in f:
  print line
f.close()

とやると次のようなエラーになります。

UnicodeEncodeError: 'cp932' codec can't encode character u'\ufeff' in position 0: illegal multibyte sequence

どうもprintのところでBOMを出力しようとしたみたいです。

f = codecs.open('hum.txt', 'r', 'utf_16')
for line in f:
  print line
f.close()

にすればBOMは返ってこない。

BOMがちゃんとついているファイルには、わざわざバイトオーダーを指定してはいけないようです。