Запись в таблицах Paradox в .Net с определенным Langdriver - PullRequest
1 голос
/ 23 февраля 2012

Я пытаюсь добавить значения в таблицу парадоксов с помощью c #.

Дело в том, что эта таблица содержит локализованные строки, для которых BDE требуется Langdriver ANSII850.

Я пытался использовать драйверы OLEDB и Odbc в .Net, но не могу записать правильные значения в свою базу данных. У меня всегда возникают проблемы с кодировкой.

Пример:

// 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};";

Затем я пытаюсь вставить значение "çã á õõ", чтобы проверить. В зависимости от используемого драйвера, я получаю разные результаты, но окончательная строка никогда не кодируется правильно.

Отредактировано:

Наконец-то я нашел решение, но не идеальное:

  • Я могу переключаться с langdriver на другой, вызывая внешний исполняемый файл, написанный на delphi. В этом случае я использую ANSII850.
  • Затем я могу читать данные из моих таблиц парадоксов. Но я все еще не получаю свои данные в хорошем формате.
  • Строки из таблиц также не кодируются с помощью кодовой страницы 850, попытка декодировать их с помощью инструментов .Net просто не работает
  • Вместо этого я вручную отслеживаю специальные символы (которые не правильно читаются) и заменяю их правильными символами utf8.
  • Для письма я делаю прямо противоположное.

Работает, но все равно не идеально.

1 Ответ

0 голосов
/ 28 февраля 2012

Вы уверены, что используете BDE?Ваши примеры относятся ко многим частям Microsoft.

BDE использовал более высокие коды для этих «специальных символов» и кодовую страницу для их интерпретации.Похоже, 850 - это то, что вы считаете правильным.Если вы можете просто послать строку в bde с шестнадцатеричным или десятичным числом нужных вам символов, вы сможете увидеть, правильно ли она будет печататься.

...