我有以下数据库,用MS Access的某些变体编写(这是一个MDB文件-UNIX file确认了这一点)
我正在尝试从Windows中的Javascript读取内容。虽然,实际上,任何工具都可以。例如,Python也可以。。。但是我想避免使用VB6。当然,我可以在那里剪切一些代码并在IDE中运行它,然后提取值。但我想了解潜在的机制
我正在使用一个查询,node-adobd从中选择所有地图的“数据”列。这是一个通过zlib压缩的字符串(压缩级别未知),然后将其压缩到表中。
在Node中,使用以下功能,我可以进行查询并获取基础的字符串流...
75 0a 00 00 **78 01** 53 d5 20 ...
Run Code Online (Sandbox Code Playgroud)
那是ZLIB的魔幻数字,向我提示。我尝试使用zlibNode来解压缩它,但是由于各种错误而失败。前四个字节是游戏引擎似乎要附加的标头。但这与我所知道的有效负载无关(您可以在此处阅读压缩例程。
由于似乎可以在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 …Run Code Online (Sandbox Code Playgroud) 我试图将Access DB转换为MySQL.一切都很完美,期待一个大的猴子扳手...如果访问数据库有任何非标准字符,它将无法正常工作.我的询问会告诉我:
Incorrect string value: '\xE9d'
Run Code Online (Sandbox Code Playgroud)
如果我直接回显出具有"无效"字符的行文本,我在浏览器的黑色方块中会出现一个问号(因此é会在回声中变成无效的符号).
注意:相同的将接受,保存并显示用于标题此数据库上载的文本框中的"é"罚款.此外,如果我'保存为'页面并重新打开它''é'正确显示....
这是我如何连接:
$conn = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=$fileLocation;SystemDB=$securefilePath;Uid=developer;Pwd=pass;charset=utf;");
Run Code Online (Sandbox Code Playgroud)
我尝试了很多东西,包括:
$conn -> exec("set names utf8");
Run Code Online (Sandbox Code Playgroud)
当我在访问中尝试'CurrentDb.CollatingOrder'时,它告诉我1033显然是dbSortGeneral用于"英语,德语,法语和葡萄牙语整理顺序".
怎么了?这几乎就像PDO向我发送了一个整理我的浏览器并且PHP并不完全理解.