Python 2.7 では、Unicode として読み取り、utf-16-le として書き込みます。ほとんどの文字は正しく解釈されます。ただし、u'\u810a' のようにunichr(33034)としても知られるものもあります。次のコード コードは正しく記述されません。
import codecs
with open('temp.txt','w') as temp:
temp.write(codecs.BOM_UTF16_LE)
text = unichr(33034) # text = u'\u810a'
temp.write(text.encode('utf-16-le'))
ただし、これらのいずれかを上記で置き換えると、コードが機能します。
unichr(33033) と unichr(33035) は正しく動作します。
'utf-8' エンコーディング (BOM、バイトオーダーマークなし)。
正しく書き込まれない文字を認識するにはどうすればよいですか? また、これらの文字または代替文字を出力する BOM を含む「utf-16-le」でエンコードされたファイルを書き込むにはどうすればよいですか?