Re: Перекодировка из cp866 в cp1251
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 18.02.02 13:00
Оценка:
Здравствуйте Аноним, Вы писали:

А>Мастера, подскажите как конвертировать данные из таблицы DBASE IV (cp 866 — Clipper)

А>в cp 1251 Paradox. Прооблема в том, что это нужно делать из программы, по одной записи а не всю таблицу сразу.

На мастера не претендую, но способ знаю:

Берешь таблицу соответствия таблиц кодировок
  unsigned char cpAltWin[0x100] = { 
    // Здесь по индексу символа в таблице cp866 лежит номер этого
    // символа в Win1251 в количестве 256 штук. 
  };
  ...
  // В месте перекодировки посылаешь строку, и делаешь 
  // посимвольное преобразование:
  unsigned char cDecoded = cpAltWin[(unsigned char)someChar];
  ...


Ну, дальше — самодеятельность. Этот кусок кода можно оформить как функцию, перегоняющую содержимое одного буффера/контейнера в другой, либо in-place конвертить (тогда слева тот-же чар должен стоять, что и справа)...

Таблицу соответствия можно, например, получив, напечатав в Фаре (программно, конечно) эти самые 256 символов и их индексы в кодировке cp866, а потом просмотреть его в Win, и руками забить.

С уважением
Алексей Кирдин
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.