【问题标题】:Writing in Paradox tables in .Net with a specific Langdriver使用特定的 Langdriver 在 .Net 中编写 Paradox 表
【发布时间】:2012-02-23 08:43:19
【问题描述】:

我正在尝试使用 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 字符。
  • 对于写作,我的做法正好相反。

有效,但仍不理想。

【问题讨论】:

    标签: c# .net odbc oledb paradox


    【解决方案1】:

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

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

    【讨论】:

    • 我正在尝试在 C#.Net 中访问这些表,我该如何使用 BDE?还有其他方法吗(我宁愿不使用BDE)
    • 也许我误解了,但你的问题是关于 BDE 的。使用 .Net 我想你必须看看微软使用什么。他们的软件还能够读取悖论表。我不知道 .Net 是如何读取旧代码页的,但之前 .Net MS 软件也使用过并且可以指定代码页。
    • 感谢您的评论,您给了我一个线索
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 2023-03-27
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    相关资源
    最近更新 更多