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がちゃんとついているファイルには、わざわざバイトオーダーを指定してはいけないようです。