gpt4 book ai didi

python - 在 python 中查找 utf-16 文件。如何?

转载 作者:IT老高 更新时间:2023-10-28 21:11:12 34 4
gpt4 key购买 nike

由于某种原因,我无法找到我的 utf16 文件。它产生“UnicodeException:UTF-16 流不以 BOM 开头”。我的代码:

f = codecs.open(ai_file, 'r', 'utf-16')
seek = self.ai_map[self._cbClass.Text] #seek is valid int
f.seek(seek)
while True:
ln = f.readline().strip()

我尝试了一些随机的东西,比如先从流中读取一些东西,但没有帮助。我检查了使用十六进制编辑器寻求的偏移量 - 字符串从字符开始,而不是空字节(我猜它的好兆头,对吗?)那么如何在python中寻找utf-16呢?

最佳答案

嗯,错误消息告诉你原因:它没有读取字节顺序标记。字节顺序标记位于文件的开头。在没有读取字节顺序标记的情况下,UTF-16 解码器无法知道字节的顺序。显然它是在您第一次阅读时懒惰地执行此操作,而不是在您打开文件时 - 否则它假设seek() 正在启动一个新的 UTF-16 流。

如果您的文件没有 BOM,那肯定是问题所在,您应该在打开文件时指定字节顺序(参见下面的 #2)。否则,我会看到两种可能的解决方案:

  1. 在查找之前读取文件的前两个字节以获取 BOM。您似乎说这不起作用,表明它可能在寻找之后期待一个新的 UTF-16 流,所以:

  2. 在打开文件时使用 utf-16-leutf-16-be 作为编码明确指定字节顺序。

关于python - 在 python 中查找 utf-16 文件。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6779315/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com