我确信有人应该能够在这里帮助我,因为感觉就像这么简单的答案,但我无法在任何地方找到它。我需要编写一个unicode字符串(基本上是空填充ascii),但是它没有按预期工作,无论我从互联网上尝试什么,它最终都是纯粹的ascii。
with open('test.txt', 'wb') as oFile:
name = u'AAA'
oFile.write(name) //always writing 0x414141 i want 0x410041004100
只是为了澄清,虽然这个问题已经回答了,如果有人在这里徘徊,用例是它是一个混合二进制文件(这里是一个int,一个unicode字符串,一个struct等)我正在编辑地点。我真的只是希望能够按照它在文件中表示的方式编写字符串(' AAA' as 0x410041004100而不是0x414141)
答案 0 :(得分:2)
您可以将.encode()
方法与适当的编解码器一起使用:
>>> name = u"aaa"
>>> name.encode("utf_16")
'\xff\xfea\x00a\x00a\x00'
开头的\xff\xfe
是Byte Order Mark (BOM)。您的申请可能需要也可能不需要,如果不需要,您可以将其删除。
答案 1 :(得分:0)
您可以使用codecs
模块在打开文件时指定编码:
import codecs
with codecs.open('test.txt', 'wb', encoding='utf-16') as oFile:
...
更多信息: