Python 2.7.2 に u"\u0638" という文字列があります。ファイルに書き込むとき:
f = open("J:\\111.txt", "w+")
f.write(u"\u0638".encode('utf-16'))
f.close()
16 進数では次のようになります。FF FE 38 06 このような文字列を標準出力に出力すると、「\xff\xfe8\x06」と表示されます。
質問: stdout に出力される文字列の \x38 はどこにありますか? つまり、標準出力に出力される文字列が「\xff\xfe\x38\x06」ではないのはなぜですか?
文字列をファイルに 2 回書き込む場合:
f = open("J:\\111.txt", "w+")
f.write(u"\u0638".encode('utf-16'))
f.write(u"\u0638".encode('utf-16'))
f.close()
ファイルの 16 進表現には、バイト オーダー マーク (BOM) \xff\xfe が2 回含まれています: FF FE 38 06 FF FE 38 06
UTF-16 でエンコードされた文字列で BOM を書き込まないようにするテクニックは何ですか?