gpt4 book ai didi

Python - 使用 BOM 解码 UTF-16 文件

转载 作者:太空狗 更新时间:2023-10-29 18:23:11 26 4
gpt4 key购买 nike

我有一个 UTF-16 LE文件 BOM .我想将此文件转换为不带 BOM 的 UTF-8,以便我可以使用 Python 对其进行解析。

我使用的常用代码没有成功,它返回未知字符而不是实际文件内容。

f = open('dbo.chrRaces.Table.sql').read()
f = str(f).decode('utf-16le', errors='ignore').encode('utf8')
print f

解码此文件以便我可以使用 f.readlines() 解析它的正确方法是什么?

最佳答案

首先,你应该以二进制模式阅读,否则事情会变得困惑。

然后,检查并删除 BOM,因为它是文件的一部分,但不是实际文本的一部分。

import codecs
encoded_text = open('dbo.chrRaces.Table.sql', 'rb').read() #you should read in binary mode to get the BOM correctly
bom = codecs.BOM_UTF16_LE #print dir(codecs) for other encodings
assert encoded_text.startswith(bom) #make sure the encoding is what you expect, otherwise you'll get wrong data
encoded_text = encoded_text[len(bom):] #strip away the BOM
decoded_text = encoded_text.decode('utf-16le') #decode to unicode

在完成所有解析/处理之前不要编码(到 utf-8 或其他方式)。您应该使用 unicode 字符串完成所有这些操作。

另外,decode 上的 errors='ignore' 可能不是一个好主意。考虑一下更糟糕的情况:让您的程序告诉您出现错误并停止,或者返回错误数据?

关于Python - 使用 BOM 解码 UTF-16 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22459020/

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