如何获得存储在数据库中的字节的“原始流”?

时间:2019-05-24 02:37:33

标签: javascript database vb6

我有following database,用MS Access的某种变体编写(这是一个MDB文件-UNIX file证实了这一点)

我正在尝试从Windows中的Javascript读取内容。虽然,实际上,任何工具都可以。例如,Python也会很好...但是我正在尝试避免使用VB6 。当然,我可以在那里剪切一些代码并在IDE中运行它,然后提取值。但我想了解基本机制

我正在使用node-adobd中的查询来选择所有地图的“数据”列。这是一个通过zlib压缩的字符串(压缩级别未知),然后将其压缩到表中。

在Node中,使用following function,我可以进行查询并获得基础的字符串流...

75 0a 00 00 **78 01** 53 d5 20 ...

这是一个ZLIB魔术数字,向我提示。我尝试使用Node中的zlib解压缩,但是由于各种错误而失败。前四个字节是游戏引擎似乎要附加的标头。但这与我所知道的有效负载无关(您可以阅读compression routine here

由于在VB6领域中似乎可以毫无问题地读取它,而根据我的判断(如果想要阅读,可以找到它modDatabase),我可以想到的就是:发生在数据库连接器中或获取数据时。可能是未经我的同意而对某些内容进行了编码。

我这样查询:

  connection.query('Select Number, Data from [Maps]')
   .then((results) => {
     const result = results[0]; // first one to experiment with
     // use the above code to construct a byte array from 
     // result.Data, but I have also tried things like 
     // Buffer.from ... but it asks about encodings
     // which I am unsure of!
   }); 

在获取原始字节的情况下,我得到了上述签名。使用另一种编码获取缓冲区具有不同程度的成功。在DBeaver中查看原始数据会产生相似的结果,具体取决于编码。但是,要查看它,我必须选择一种编码。

我的理解是,一天结束时,字符串只是简单地以字节序列的形式存储在内存中-我不能从低级别访问它吗?如果没有,如何处理编码转换?

According to this page,备忘录是Unicode(但并未真正说出什么),但提到了两个字节,因此假设这是相对较新的访问版本,可能是UTF-16。

0 个答案:

没有答案