Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];

Вниз

dBASE зашифровался!   Найти похожие ветки 

 
ikis   (2003-12-24 13:53) [0]

Вводное: есть база даных на CD в виде набора таблиц *.dbf, содержащая сведения о предприятиях региона. Есть программа-оболочка, позволяющая эти данные фильтровать и печатать.
Задача: расширить функцирнальность оболочки, формировать наборы по редко используемым признакам
Проблема: русский текст, который прекрасно читается с оболочкой, в Database Desktop/Excel/Access выглядит вот так:


 
Anatoly Podgoretsky   (2003-12-24 13:56) [1]

Database Desktop излечимо, сменой шрифта
Excel/Access означает, что текст перекодирован из OEM в ANSI, попробовать перекодировать обратно.


 
Reindeer Moss Eater   (2003-12-24 13:59) [2]

Решение:
Заглянуть внутрь файла и выяснить в какой кодровке в нем представлены данные.


 
LordOfSilence   (2003-12-24 14:25) [3]

Ты в Access как закачиваешь эти *.dbf?


 
ikis   (2003-12-24 14:51) [4]

> Anatoly Podgoretsky © : смена шрифта DD по умолчанию не помогла, к сожалению.
Перекодировать обратно? Как?!!

> Reindeer Moss Eater © : Заглянуть при помощи чего? Где это указано? Что даст мне осознание факта, что данные в такой-то кодировке?

> LordOfSilence © : Access/Файл/Открыть


 
LordOfSilence   (2003-12-24 14:59) [5]

Вот когда ты "открыть" делаешь, попробуй тип файла выбрать
ODBC_Databases(). Предварительно создай ODBC-источник.
Попробуй натравить на него фоксовский драйвер.


 
sniknik   (2003-12-24 15:09) [6]

>> LordOfSilence © : Access/Файл/Открыть
> Попробуй натравить на него фоксовский драйвер.
этот
DRIVER={Microsoft dBase VFP Driver (*.dbf)}
обычно у него уже есть алиас в ODBC "Visual FoxPro Tables".


 
Reindeer Moss Eater   (2003-12-24 15:10) [7]

Reindeer Moss Eater © : Заглянуть при помощи чего?
При помощи фаровского вьера (F3).

Где это указано?
Нажимая последовательно во вьюере F8 можешь получить ситуацию, когда будет видет текст на русском. Посмотрев на первую статус - строку вьюера можешь увидеть кодировку данных.

Что даст мне осознание факта, что данные в такой-то кодировке?
Хороший, мать его, вопрос. Просто отличный.
Даст направление для дальнейших действий, вот что это даст.


 
ikis   (2003-12-24 15:26) [8]

>Reindeer Moss Eater ©
Так выглядит одна и та же строка в кодировке DOS:



 
Reindeer Moss Eater   (2003-12-24 15:43) [9]

Значит данные там лежат ни в анси ни в оем.
Значит скорее всего они там закодированы.
Значит скорее всего шаманство с языковыми драйверами не поможет.
Значит скорее всего придется писать грабилку текста с экрана и запись в свой DBase файл.


 
ikis   (2003-12-24 16:01) [10]

Спасибо всем! Новая информация: при ближайшем рассмотрении содержимого CD, была обнаружена папочка "IDAPI" (да, вот такая древняя прога!): LANGDRV (d), bdecfg.exe, bdecfg.hlp, idapi.cfg, а также DLL - idapi01, idasci01, idbat01, iddbas01, idodbc01 и др. Так вот, bdecfg, запущенный с CD, показывает драйвер DBASE Version 1.0 (!), TYPE=FILE, LANGDRIVER=dBASE RUR cp66 и т.д. Стало быть, вот где собака порылась! :))
Новая задача: и как заставить всю эту хрень работать???


 
Reindeer Moss Eater   (2003-12-24 16:08) [11]

TYPE=FILE, LANGDRIVER=dBASE RUR cp66

Если это так, то в фаре ты бы увидел русские буквы при DOS кодировке. Если же ты их все же не видишь, значит данные перекодированы и раскодирование происходит в приложении налету


 
ikis   (2003-12-24 16:15) [12]

> Reindeer Moss Eater ©: небольшое уточнение - текст на самом деле не русский, а украинский. Но это ни на что не влияет на самом деле - просто отсутствующие в русском буквы замещаются "?", и все!
Еще одно: мой предшественник - продвинутый пользователь Excel, не программер, каким-то чудом решил эту проблему! Как - никто не знает, связь с ним потеряна навсегда. В общем, это теперь для меня дело чести. И перекодирования "на лету", очевидно, не происходит...


 
Reindeer Moss Eater   (2003-12-24 16:19) [13]

И перекодирования "на лету", очевидно, не происходит...

"Очевидно" - это просто слово-паразит, или имеет какое-то веское обоснование?


 
ikis   (2003-12-24 16:27) [14]

Веское основание: в случае перекодирования "на лету" эту задачу нельзя было бы решить средствами Excel. Кроме того, диск не имеет никакой защиты, регистрации или чего-то еще. Зачем шифроваться, кодировать "на лету", если оболочка всегда под рукой и с ее помощью доступны абсолютно все записи?


 
Reindeer Moss Eater   (2003-12-24 16:42) [15]

Берем первую запись из этого файла.
Берем слово, отображаемое программой на естественном языке.
Имеем пару Байт<->Cимвол алфавита.

Остается определить в какой кодировке данные. Тем более что ANSI и OEM уже отпали сами собой.
Может это KOI


 
ikis   (2003-12-24 17:16) [16]

Ура! Все разрешилось само собой! Сия програмуля использует ReportSmith для печатанья отчетов, а в нем есть... меню Save As! Сохраняешь как *.xls - все читается, все зашибись! Ну теперь-то я ему...

Прошу прощения у уважаемых господ (особенно у любителя моха :о) за украденное внимания. Больше не буду... ;оD


 
Reindeer Moss Eater   (2003-12-24 17:19) [17]

Сохраняешь как *.xls - все читается, все зашибись!

Действительно зашибись, если учесть, что утверждалось, что предшественник открывал ёкселем оригинальный файл, а не сохраненный xls.


 
Anatoly Podgoretsky   (2003-12-24 17:34) [18]

Это утверждалось не только предшественником, а самим авторов, что означае где соврамши.


 
Anatoly Podgoretsky   (2003-12-24 17:35) [19]

Да еще и открывалос и фаром, что вообще ни на какие перекодировки не влияет.


 
Reindeer Moss Eater   (2003-12-24 17:38) [20]

Ну у него (автора) вьюер по умолчанию. Только OEM и ANSI понимает. Если осмысленного текста не видим, то я и сделал предположение, что данные закодированы.


 
sniknik   (2003-12-24 17:52) [21]

Reindeer Moss Eater © (24.12.03 17:38) [20]
если VFP то он в кодировке 1251 работает, вроде бы, но в общем точно не OEM и ANSI. (т.е. хотя осмысленного текста нет но могут быть и не закодированы)


 
Reindeer Moss Eater   (2003-12-24 17:59) [22]

Ну так фар-то бы все равно увидел осмысленный русский текст в этом случае.


 
ikis   (2003-12-24 18:09) [23]

Соврамши - хорошее слово! Только применили Вы его неправильно.
Где это я утверждал, что предшественник открывал оригинальный файл? По-моему, совершенно ясно теперь, что он поступил точно также, как я - загнал отчет по всем предприятиям в RS и "сохранил как..."

Вьювер по умолчанию? Да нет, я фаром вообще-то не пользуюсь. К тому же, чтобы прочитать этот текст, я использовал Штирлица и Bred2r (самоделка одна, очень рекомендую) - безрезультатно.

По поводу VFP и прочего "шаманства" - все попробовал! Точно можно сказать, что к FoxPro мои файлы не имееют отношения...

Так что "не гоните, да не гонимы будете", как сказал не помню кто...


 
Reindeer Moss Eater   (2003-12-24 18:11) [24]

Вьювер по умолчанию? Да нет, я фаром вообще-то не пользуюсь. К тому же, чтобы прочитать этот текст, я использовал Штирлица и Bred2r (самоделка одна, очень рекомендую) - безрезультатно

Ты, несправедливо гонимый, утверждал, что тебе очевидно, что данные в файле не закодированы.


 
Reindeer Moss Eater   (2003-12-24 18:14) [25]

ikis (24.12.03 16:27) [14]
Веское основание: в случае перекодирования "на лету" эту задачу нельзя было бы решить средствами Excel. Кроме того, диск не имеет никакой защиты, регистрации или чего-то еще. Зачем шифроваться, кодировать "на лету", если оболочка всегда под рукой и с ее помощью доступны абсолютно все записи?


А затем, что бы труднее было воспользоваться самим файлом данных без участия программы.


 
ikis   (2003-12-24 18:20) [26]

Но при этом дозволяется экспортировать из генератора отчетов?
И программа доступна и свободна к юзанью?
Это подарочный диск для гостей города. Просто прога старая, отсюда все проблемы.
Не закодированы они, зуб даю! ( как последний аргумент!! ;))


 
Reindeer Moss Eater   (2003-12-24 18:26) [27]

Ты бы лучше не зубами раскидывался, а привел бы пару : <байты_в_поле> = <буквы_на_экране>


 
ikis   (2003-12-24 18:38) [28]

Хм... Стыдно признаться, но... как эти байты выковырять? Букв-то я сколько угодно могу привести...


 
Reindeer Moss Eater   (2003-12-24 18:40) [29]

А неужели очень рекомендованный "Штирлиц и Bred2r" не позволяет видеть HEX коды байтов просматриваемого файла?


 
ikis   (2003-12-24 18:42) [30]

А, понял. Счас сделаю...


 
ikis   (2003-12-24 19:05) [31]

Ну вот, что получилось:



 
Anatoly Podgoretsky   (2003-12-24 19:14) [32]

Ерунду какую то гонишь, из приведеных хекс кодов никак не может получить вышеприведенная строка.


 
ikis   (2003-12-24 19:34) [33]

Гоню... На самом деле на экране


 
YuRock   (2003-12-24 19:41) [34]

Ребята! Я вас помирю. Да, данные в dbf-ке не закодированы, но вот в чем дело: у этого драйвера (я с ним 2 года работал) есть признак (30-й байт с начала файла), называемый "ISANSI".

Если этот байт равен $C9 (можно посмотреть, например, в фаре F3-F4), то ISANSI = True, и тогда строковые данные представляются в таком виде, над которым вы бьетесь. Обычно этот формат используют в Clipper"ах под Windows. Прочитать его можно, например, программно с помощью дельфевой TTable при TableType = ttFoxPro (при чтении строк их надо конвертить через CharToOem (или OemToChar - я всегда путаю)).

Если же нет - обычный досовский DBase, для просмотра которого сгодится и фар, и эксель, и т.д...


 
Reindeer Moss Eater   (2003-12-25 08:42) [35]

YuRock ©

Очередное открытие Америки состоялось? Поздравляю.
Но:
Байт этот не зовется "ISANSI". Этот байт говорит о кодовой странице данных. (имет больше значений чем "анси"/"неанси").
Бывают случаи, когда этот байт говорит: "ЁПРСТ!, данные в моем файле лежат в ANSI". А на самом деле они в OEM.
И это видно в любом вьюере не ориентированном на формат DBase.
Например во вьюере FAR"а.

Вот и все. Если бы автор вопроса выполнил рекомендации данные ему в самом начале, все было бы уже на своих местах.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.01 c
1-63174
Alibaba
2004-01-10 16:32
2004.01.20
Долгая загрузка


1-63249
DimaK
2004-01-08 19:49
2004.01.20
Ошибка ассемблера в XP


3-62968
Olivka
2003-12-24 12:49
2004.01.20
Работа с ХП, возвращающими данные через FIBdataset


1-63168
DDA
2004-01-10 18:57
2004.01.20
ComboBox


14-63375
Ega23
2003-12-29 12:35
2004.01.20
Кстати об играх:





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский