文字列からバイト順マークを削除する必要があります。BOMを見つけるためのコードはすでにありますが、実際の文字列から削除する必要があります。
例を挙げましょう。BOMfeff
の長さは2バイトです。これは、文字列の最初の2バイトが最後の文字列に含まれないことを意味します。ただし、Pythonの文字列ストリッピングを使用すると、文字列から多くのストリッピングが削除されます。
コードスニペット:
print len(bom)
print as_hex(bom)
print string
print as_hex(string)
string = string[len(bom):]
print string
print as_hex(string)
出力:
2
feff
Organ
feff4f7267616e
rgan
7267616e
私が手に入れたいのは:
2
feff
Organ
feff4f7267616e
Organ
4f7267616e
このas_hex()
関数は、文字を16進数("".join('%02x' % ord(c) for c in bytes
)として出力するだけです。