Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.20;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.025 c
1-63101
Unknown
2004-01-10 22:42
2004.01.20
TWinControl


3-62986
Rafe
2003-12-23 13:11
2004.01.20
Что-то непонятное стало происходить с параметрами...


1-63125
PS
2004-01-07 19:14
2004.01.20
Почему так медленно и как исправить?


3-63003
Rio
2003-12-23 12:34
2004.01.20
Фильтрация данных


14-63295
blackman
2003-12-30 22:00
2004.01.20
Михаил ЖВАНЕЦКИЙ. Новогоднее обращение к советскому народу