Форум: "Базы";
Текущий архив: 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