【发布时间】:2013-03-04 10:43:29
【问题描述】:
我有一些文件包含一堆不同类型的二进制数据,我正在编写一个模块来处理这些文件。
其中,它包含以下格式的 UTF-8 编码字符串:2 字节大端 stringLength(我使用 struct.unpack() 解析),然后是字符串。由于它是 UTF-8,字符串的字节长度可能大于 stringLength 并且如果字符串包含多字节字符(更不用说弄乱所有文件中的其他数据)。
如何从文件中读取 n 个 UTF-8 字符(不同于 n 个字节),同时了解 UTF-8 的多字节属性?我已经用谷歌搜索了半个小时,我发现的所有结果要么不相关,要么做出了我无法做出的假设。
【问题讨论】:
-
您确定 stringLength 是字符而不是字节吗?
-
哇,那真是一种可怕的格式。您是否已将数据读入字符串或某种列表?可以很容易地检查 UTF-8 字节以确定一个字符后跟多少字节,但是您需要逐个解码字符处理这些字符。
-
@GrahamBorland 100%?不,我还没有找到实际使用多字节字符的文件,但这是我对规范的解释。
-
@MartijnPieters 好的,我如何在 Python 中做到这一点?有什么方便的模块可以使用吗?