c# - 使用特定的 Langdriver 在 .Net 中编写 Paradox 表

标签 c# .net odbc oledb 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 编写的外部可执行文件从一个 langdriver 切换到另一个。在本例中,我使用的是 ANSII850。
  • 然后,我就可以从悖论表中读取数据了。但我的数据格式仍然不正确。
  • 表中的字符串也未使用代码页 850 进行编码,尝试使用 .Net 工具对其进行解码是行不通的
  • 相反,我手动跟踪特殊字符(未正确读取)并将它们替换为正确的 utf8 字符。
  • 对于写作,我做的恰恰相反。

它有效,但仍然不理想。

最佳答案

您确定您使用的是 BDE 吗?您的示例涉及很多 Microsoft 部分。

BDE 使用这些“特殊字符”的高级代码和代码页来解释它们。看起来 850 是您认为正确的值。如果您可以将包含所需字符的十六进制或十进制的字符串发送到 bde,您也许能够看到它是否会正确打印。

关于c# - 使用特定的 Langdriver 在 .Net 中编写 Paradox 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9409620/

相关文章:

javascript - 在 javascript 中将 C# 数组转换为 json

c# - 如何确保文件是有效的音频文件并且不受 DRM 保护?

c# - 同时定位 ef core 3.1 和 5 是个好主意吗?

php - 如何使用 PHP 确定多个 SQL 查询何时完成

c# - 图像无法从隐藏代码中的 BitmapImage 正确加载

用于导入 .dll 的 C# 包装器, "Attempted to read or write protected memory"

c# - ExpressionTree 重写 - 参数 'x' 不在范围内

android - 如何使用 android 更新 Sharepoint 2010 列表项?

mysql - 如何使用 Delphi 连接到 MySQL 服务器

mysql - 通过批处理脚本创建mysql odbc连接