如何解码BLOB数据,进行编辑,然后再次编码为BLOB数据?

问题描述 投票:-1回答:1

我是SQLite的新手,但我一直在尝试浏览我要从中提取数据的数据库文件(file.db)。

特别是在一个表中,“内容”列中的数据包含我无法读取的BLOB数据。我能够将特定的单元格导出到.txt,但是BLOB数据看起来不可读。

我一直在尝试使用PHP进行解码,但没有任何效果,因为我在研究中发现的信息是有关在BLOB列中存储图像。我肯定知道BLOB列中的信息类型是.htm文件。

<?php 
$file_name = "exported_blob.txt";
$gestor = fopen($file_name, "r");
$content = fread($gestor, filesize($file_name));
fclose($gestor);
header('Content-type: text/htm');
echo $content;

// then here create a new txt file with the changes in order to import into cell
?>

[我的目标是解码BLOB数据(这是一个htm文件),对其进行编辑,然后再次编码为BLOB并保存,然后查看更改。

我只知道javascript和PHP,不懂专家。请帮助一些想法或简单的解决方案。

谢谢您!

database sqlite blob decode encode
1个回答
0
投票

首先,BLOB是Binary大对象。 HTML是一种文本格式,除少数Unicode编码之一外,不需要解码。现代文本程序和/或浏览器应检测任何此类文本编码,并将结果显示为网页和/或可读的HTML文本。如果不是这种情况,那么可能不是您想像的简单HTML页面。

顺便说一句,如果它是HTML文件,为什么导出带有.txt扩展名的文件名?

如果数据确实以二进制形式存储,那么将其导出为文本可能会没有用。将其导出为二进制文件,这样文本编码就不会出现问题。如果它是真正的HTML文本,那么最好将其导出为二进制,这样就可以记录每个字节而无需更改。然后,您应该能够在文本查看器和/或浏览器中将其打开以查看HTML页面。

但是,如果看起来不可读,那么HTML文件显然是以其他方式编码的,并且只能检查格式而无需检查前几个字节。获取一个二进制十六进制编辑器,并记录前8个十六进制字节。编辑问题并发布该信息。

(至于第二部分。重新编码。好吧,这个问题显然需要弄清楚格式,正确保存并解码。重新编码为相同格式,然后保存回数据库必然是一个全新的问题。无论如何,您可能还是要重新考虑一下,因为首先将HTML文件转换为某种二进制格式来比较HTML文件可能没有用。)

© www.soinside.com 2019 - 2024. All rights reserved.