簡體   English   中英

在python中將unicode寫入二進制文件

[英]writing unicode to binary file in python

我想知道如何將unicode(utf-8)寫入二進制文件。 背景如下:我有一個40字節的標頭(10個整數),以及一個表,表中具有可變數量的Triple-int結構。 寫這些是蛋糕。

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

編寫基於ASCII的常規字符串很容易:

value = ('ab')
s = struct.Struct('2s')
packed_data = s.pack(value)

我從Interpret字符串中學習了如何將其打包為二進制數據

但是有沒有辦法對基於unicode(utf-8)的字符串執行此操作?

有任何想法嗎? 有沒有人這樣做過?

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

因此,只需對Unicode字符串進行編碼,然后在編寫打包的int后將它們附加到文件中即可。

unicode.encode('utf-8')將返回以UTF-8編碼的字節字符串; 只需在包裝前檢查長度即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM