在python中将unicode写入二进制文件

Cod*_*nts 2 python unicode file-io

我想知道如何将unicode(utf-8)写入二进制文件。背景如下:我有一个40字节的标头(10个整数),以及一个表,表中具有可变数量的Triple-int结构。写这些简直是蛋糕。

现在,我想在文件末尾添加一串字符串。

编写基于ASCII的常规字符串很容易:

value = ('ab')
s = struct.Struct('2s')
packed_data = s.pack(value)
Run Code Online (Sandbox Code Playgroud)

我从Interpret字符串中学习了如何将其打包为二进制数据

但是有没有办法对基于unicode(utf-8)的字符串执行此操作?

有任何想法吗?有人做过吗?

Mar*_*nen 5

Unicode!= UTF-8。UTF-8是Unicode的二进制编码,因此就像编写ASCII字符串一样编写UTF-8字符串。也无需打包编码字符串。它已经“只是一堆字节”。

# coding: utf8
import struct
text = u'??????'
encoded_text = text.encode('utf8')

# proof packing is redundant...
format = '{0}s'.format(len(encoded_text))
packed_text = struct.pack(format,encoded_text)
print encoded_text == packed_text # result: True
Run Code Online (Sandbox Code Playgroud)

因此,只需对Unicode字符串进行编码,然后在编写打包的int后将它们附加到文件中即可。