13.07.2006, 10:34 | #1 |
MCT
|
Выгрузка в dbf с перекодировкой
Собственно сабж. Написал выгрузку в dbf. Проблем нет. Но при импорте в ЕГАИС не поддерживается кодировка DOS. Написал перекодировку из DOS в Windows и вот тут внимание самое интересное. Нижний регистр перекодируется без проблем это символы "абвгдежзикл..." а вот с верхним регистром проблемы "АБВГДЕЖЗ...". Коды верхнего регистра в ASCI отсутствуют полностью, только можно найти жалкие остатки типа 134 - Е, 135 - Ш, 153 - Т. Собственно недостоющие можно добыть из латиницы, но как быть с "Я, Ж.."?
|
|
13.07.2006, 11:00 | #2 |
Участник
|
Могу предположить что при выгрузке вы используете драйвер dBase, если заменить драйвер на FoxPrо-шный то выгрузка будет в кодировке WIN и ничего перекодировать собственно не нужно. Поищите VFPODBC и установите если отсутствует.
|
|
13.07.2006, 11:00 | #3 |
Дмитрий Ерин
|
Цитата:
Сообщение от MikeR
Коды верхнего регистра в ASCI отсутствуют полностью, только можно найти жалкие остатки типа 134 - Е, 135 - Ш, 153 - Т.
WinApi::CharToOemBuff(_text) Обратного, к сожалению, нет, но его несложно создать по аналогии.
__________________
|
|
13.07.2006, 11:07 | #4 |
MCT
|
Спасибо уже ознакомился с предложением о написании WinApi::OemToChar(_text), но только где взять библиотеку? Перебором подобрать не получилось.
Ruff тогда опубликуйте коды и все навсего. |
|
13.07.2006, 11:10 | #5 |
MCT
|
Вот предлагаю ознакомится с существующими http://www.tspu.edu.ru/ebooks/stakhin/2.3.htm
далее с 240 по 262 идет нижний регистр между ними куча мне не нужных символов. А коды верхнего я уже опубликовал |
|
13.07.2006, 11:16 | #6 |
Administrator
|
Оно?
X++: static str oemToChar(str _text) { DLL dll = new DLL("user32.dll"); DLLFunction dllFunction = new DLLFunction(dll, "OemToCharA"); Binary result = new Binary(strlen(_text) + 1); ; dllFunction.returns(ExtTypes::DWord); dllFunction.arg(ExtTypes::String, ExtTypes::Pointer); dllFunction.call(_text, result); return result.string(0); } Все, нашел dis слой, с комментариями от valu, класс WinApi
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 13.07.2006 в 11:20. |
|
13.07.2006, 11:33 | #7 |
MCT
|
Thanks sukhanchik, но получается при переводе WinApi:emToChar("АБВГДЕЖЗИЙКЛМНОПРСТ")
в 6L+T+-+ііLЈіTі=+ііTT Хотя интересный подход не додумался бы "OemToCharA" имеется в виду последняя А |
|
13.07.2006, 12:32 | #8 |
MCT
|
Совет будущим поколениям
Дело оказалось в следующем
Класс, формирующий файл dbf перекодировал из Windows в Dos, уже потом перекодировать без потерь не получится |
|
14.07.2006, 10:15 | #9 |
Дмитрий Ерин
|
Цитата:
Сообщение от MikeR
Ruff тогда опубликуйте коды и все навсего.
http://ascii.org.ru/ Верхний регистр идет с кода 128 по код 159 непрерывно. Нижний прерывается на псевдографику... Цитата:
Сообщение от MikeR
...далее с 240 по 262 идет нижний регистр...
Последний раз редактировалось Ruff; 14.07.2006 в 10:23. |
|
Теги |
ascii, dbf, dos, кодировка, таблица символов |
|
Похожие темы | ||||
Тема | Ответов | |||
Выгрузка из ODBC | 9 | |||
Выгрузка числовых данных в dbf файл | 2 | |||
почти DBF | 3 | |||
И опять DBF.... | 20 | |||
Достать данные из DBF в форму | 29 |
|