Python 如何从 unicode 字符串中获取空填充字节字符串

Python how to get null padded byte string from unicode string

我确定有人应该能够在这里帮助我,因为它感觉就像一个如此简单的答案,但我无法在任何地方找到它。我需要编写一个 unicode 字符串(基本上是空填充的 ascii),但它没有按预期工作,无论我从互联网上尝试什么,它最终都是纯 ascii。

with open('test.txt', 'wb') as oFile:
    name = u'AAA'
    oFile.write(name)  //always writing 0x414141 i want 0x410041004100

澄清一下,虽然问题已经得到解答,但万一有人在这里徘徊,用例是它是一个混合二进制文件(这里是一个 int,那里是一个 unicode 字符串,一个结构等),我是到位编辑。我真的只是希望能够按照文件中表示的方式编写字符串('AAA' 作为 0x410041004100 而不是 0x414141)

您可以将 .encode() 方法与适当的编解码器一起使用:

>>> name = u"aaa"
>>> name.encode("utf_16")
'\xff\xfea\x00a\x00a\x00'

开头的\xff\xfe是一个Byte Order Mark (BOM)。您的应用程序可能需要也可能不需要,如果不需要,您可以将其删除。

打开文件时可以使用codecs模块指定编码:

import codecs
with codecs.open('test.txt', 'wb', encoding='utf-16') as oFile:
    ...

更多信息: