使用特定的Langdriver在.Net中的Paradox表中写入



我正试图用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编写的外部可执行文件,我可以从一个语言驱动程序切换到另一个。在这种情况下,我使用的是ANSII850
  • 然后,我可以从悖论表中读取数据。但我仍然无法获得良好格式的数据
  • 表中的字符串也没有用代码页850进行编码,试图用.Net工具对它们进行解码是行不通的
  • 相反,我手动跟踪特殊字符(读取不正确),并用正确的utf8字符替换它们
  • 在写作方面,我做的恰恰相反

它有效,但仍然不理想。

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

BDE为这些"特殊字符"使用了更高的代码,并使用代码页对其进行解释。看起来850是你认为正确的。如果你只需要向bde发送一个包含你想要的十六进制或十进制字符的字符串,你就可以看到它是否会正确打印。

相关内容

  • 没有找到相关文章

最新更新