我正在尝试使用 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 字符替换它们。
- 对于写作,我正在做完全相反的事情。
它有效,但仍然不理想。