由于某些原因,我找不到我的utf16文件。它生成'UnicodeException: UTF-16流不以物料清单开头‘。我的代码:
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呢?
发布于 2011-07-22 00:41:15
错误消息告诉您原因:它没有读取字节顺序标记。字节顺序标记位于文件的开头。如果没有读取字节顺序标记,UTF-16解码器就无法知道字节的顺序。显然,在您第一次读取时,而不是在您打开文件时,它会懒惰地执行此操作--否则它会假定seek()
正在启动一个新的UTF-16流。
如果您的文件没有BOM,这肯定是问题所在,您应该在打开文件时指定字节顺序(参见下面的#2 )。否则,我会看到两种可能的解决方案:
在查找之前,
utf-16-le
或utf-16-be
作为编码来显式指定字节顺序。https://stackoverflow.com/questions/6779315
复制相似问题