Python读取SQLite BLOB失败:无法解码Blob内容如何解决?
问题
我有一个包含BLOB类型数据的SQLite数据库,尝试读取并将其保存到文件中但失败了。输出的原始字节数据如下:
b'\xcb\xd2\x00\xd2N\xa9}s\xc7\xc2\x8f\x02n\x11\xc2\xee\xb2s \x93&\xe6u\x97\xe9@\xba'
我尝试使用各种编码格式解码该字节数据,但均未成功。该BLOB中应当包含测试文件,请问如何正确获取其中的内容?
以下是我用于将Blob写入文件的代码:
def writeTofile(data, filename): with open(filename, 'wb') as file: file.write(data) print("Stored blob data into: ", filename, "\n")
以下是我用于解码提取后Blob数据的代码:
try: decoded_text = decoded_bytes.decode('utf-8') print("Decoded as UTF-8:", decoded_text) except UnicodeDecodeError: print("Failed to decode as UTF-8")
解决方法
- 不要尝试解码BLOB为文本:BLOB是二进制对象,本身不是文本数据(可能是图片、压缩包、二进制程序等),强行用UTF-8等文本编码解码必然失败,这是正常现象。
- 确认BLOB读取的正确性:你的写入代码逻辑是正确的(用
wb模式写入二进制),问题大概率出在读取SQLite中BLOB数据的步骤。确保读取时获取的是原始二进制字节,而不是被转义或处理过的字符串。比如在Python中用cursor.fetchone()[0]获取的BLOB应该直接是bytes类型,不要额外做字符串转码操作。 - 按对应文件类型验证结果:写入文件后,不要用文本编辑器打开查看(会显示乱码),根据测试文件的实际类型选择对应程序打开:
- 若为图片,用图片查看器打开
- 若为PDF,用PDF阅读器打开
- 若为压缩包,用解压工具打开
内容的提问来源于stack exchange,提问作者Gregglikehipi
相关产品推荐
相关产品推荐

