[英]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.