我有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。