我正在尝试使用 C# 在悖论表中添加值。
重点是该表包含本地化字符串,BDE 需要 Langdriver ANSII850。
我试图在 .Net 中同时使用 OLEDB 和 Odbc 驱动程序,但我无法在我的数据库中写入正确的值。我总是遇到编码问题。
例子:
// ODBC Connection string (using string.Format for setting the path)
string connectionBase = @"Driver={{Microsoft Paradox Driver (*.db )}};DriverID=538;Fil=Paradox 5.X;DefaultDir={0};CollatingSequence=ASCII;";
// I tried to put the langdriver in the CollatingSequence parameter
string connectionBase = @"Driver={{Microsoft Paradox Driver (*.db )}};DriverID=538;Fil=Paradox 5.X;DefaultDir={0};CollatingSequence=ANSII850;";
// I tried the OleDb driver
string connectionBase = @"Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Paradox 5.x;"Data Source={0};";
然后,我尝试插入值“çã á çõ”以进行测试。根据我使用的驱动程序,我得到不同的结果,但最终的字符串从未正确编码。
已编辑:
最后,我找到了一个解决方案,但并不理想:
- 我可以通过调用用 delphi 编写的外部可执行文件从一个 langdriver 切换到另一个。在本例中,我使用的是 ANSII850。
- 然后,我就可以从悖论表中读取数据了。但我的数据格式仍然不正确。
- 表中的字符串也未使用代码页 850 进行编码,尝试使用 .Net 工具对其进行解码是行不通的
- 相反,我手动跟踪特殊字符(未正确读取)并将它们替换为正确的 utf8 字符。
- 对于写作,我做的恰恰相反。
它有效,但仍然不理想。
最佳答案
您确定您使用的是 BDE 吗?您的示例涉及很多 Microsoft 部分。
BDE 使用这些“特殊字符”的高级代码和代码页来解释它们。看起来 850 是您认为正确的值。如果您可以将包含所需字符的十六进制或十进制的字符串发送到 bde,您也许能够看到它是否会正确打印。
关于c# - 使用特定的 Langdriver 在 .Net 中编写 Paradox 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9409620/