2

我正在尝试使用 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 字符替换它们。
  • 对于写作,我正在做完全相反的事情。

它有效,但仍然不理想。

4

1 回答 1

0

您确定您使用的是 BDE 吗?您的示例引用了许多 Microsoft 部件。

BDE 对这些“特殊字符”使用更高的代码并使用代码页来解释它们。看起来850是您认为正确的。如果您可以使用所需字符的十六进制或十进制向 bde 发送一个字符串,您可以查看它是否能正确打印。

于 2012-02-28T00:57:15.713 回答