Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизКлассический вопрос про краказяблики в такблицах DBASE через BDE Найти похожие ветки
← →
Rule © (2004-09-01 12:44) [0]Столкнулся с интересной ситуацией, в BDE язык NATIV драйвера на DBASE настроен "ascii" ANSI,
в самих таблицах тоже кодировка такая стоит,
открываю последовательно три таблицы в своем приложении, через одни и теже компоненты класическая свлязка
TABLE-DATASOURCE-DBGRID, и мне показывает одна таблица нормально, а 2 с "краказябликами", вот помогите пожалуйста советом
компоненты использую родоные BDEшные, делфи у меня седьмое (лицензионное :) ), вот понять ничего не могу
← →
Rule © (2004-09-01 12:46) [1]Ой забыл сказать что информация в таблицах в кодировке Win1251, заносил информацию с 1С, при просмотре утилитой DBFViuwer все показывает нормально и говорит что кодировка Win1251
← →
Rule © (2004-09-01 13:05) [2]ап
← →
Rule © (2004-09-01 13:13) [3]И ещё интересный факт, отменил в текстовом поле transliterate, и все заработало нормально, а почему в другой таблице он не перекодирует, и как сделать так чтобы оно автоматчиески не прекодировало, ведь я щас использую TTABLE, а если менять таблицы динамически, неужели надо и свойство менять постоянно ?
← →
Роман Снегирев (2004-09-01 13:32) [4]я уже устал отвечать на этот вопрос
← →
Rule © (2004-09-01 14:22) [5]Роман Снегирев (01.09.04 13:32) [4]
ну вот, а если ещё раз, буду очень благодарен, перерыл всю базу в этом направлении (за последнюю неделю), и никто не отвечал на такой вопрос, хотя точно помню что было вот только тогда не обращал внимания
← →
Роман Снегирев (2004-09-01 14:32) [6]ну вообщем надо в BDEAdministrator поставить Configuration->Drivers->DBASE->langdriver=dBASE RUS cp866
← →
Rule © (2004-09-01 14:45) [7]Роман Снегирев (01.09.04 14:32) [6]
Хех, а толку, смотри
Rule © (01.09.04 12:46) [1]
Ой забыл сказать что информация в таблицах в кодировке Win1251, заносил информацию с 1С, при просмотре утилитой DBFViuwer все показывает нормально и говорит что кодировка Win1251
Я кстати нашел выход, в TTable надо выбрать в свойстве tableType - ttFoxPro
глубины смысла не понимаю но так понимаю что 1С-ка создает фокспрошные таблицы, вот поэтому и карявается все, но все же до сих пор интересно, почему одна нормально показывалась а 2 нет, а щас все три нормально, когда установил такое значение
← →
Роман Снегирев (2004-09-01 15:15) [8]эх...., просмотрел. а что в этом случае "ascii" ANSI не помогает? Короче, наконец то придется мне объяснить популярно (может быть первый и последний раз) как BDE читает кодировку из таблиц DBASE. В первую очередь она читает 29 байт dbf файла. Кому интересно
38-кодовая страница 866 DOS Russian
87-кодовая страница 1251 Windows ANSI
и т.д.
Так вот, если этот самый байт обнулен (что чаще всег бывает), тогда BDE смотрит в свои настройки: Configuration->Drivers->Native->LangDriver. Вот собственно и все. Хочу только заметить, что на самом деле все зависит от кодировки, в которой реально создавалась и заполнялась таблица, т.е. если например база 1с-овская (win1251), то как уж вы не переписывайте 29 байт в значение 38, не настраивайте BDE, все равно кодировку 866 вам ей не придать
← →
Reindeer Moss Eater © (2004-09-01 15:18) [9]Короче, наконец то придется мне объяснить популярно (может быть первый и последний раз)
Все это полуправда.
Кому действительно было интересно, тот знает, что не во всех версиях DBASE кодировка указана в 29 байте заголовка.
← →
Rule © (2004-09-01 15:22) [10]Роман Снегирев (01.09.04 15:15) [8]
а что в этом случае "ascii" ANSI не помогает?
вот в том то и дело, что всегда работало и на одну таблицу подействовало а на две нет
Так вот, если этот самый байт обнулен
В моем случае и 29 байт во всех таблицах и настройки драйвера были "ascii" ANSI проверял в дбфвьювере и в датабейздесктопе
все равно кодировку 866 вам ей не придать
так и не нада, надо наоборот чтоб он значит эту кодировку не трогал вообще, как есть пусть так и показывает, если явно отключить transliterate, то все нормально, но видимо все дело обстояло в типе таблицы типа фокспро, ну вобщем все нормально, спасибо за разьяснения, но думаю скорее всего у меня на машине глюк какойто нехороший, потомучто я толькочто попробовал на другой машине, с такимиже настройками БДЕ и с темиже файлами, то все нормально, бред какойто, как всегда (поэтому не пользуюсь БДЕ, много необьяснимых сюрпризов)
← →
Rule © (2004-09-01 15:23) [11]Reindeer Moss Eater © (01.09.04 15:18) [9]
Мы говорим про четвертую версию, так что тут полная правда
← →
Reindeer Moss Eater © (2004-09-01 15:29) [12]С таблицами от 1с я борюсь так:
Всегда сбрасываю 29 байт в ноль.
Если данные в DOS использую драйвер dbase 866 rus
Если данные в Win использую драйвер ascii
← →
Rule © (2004-09-01 15:31) [13]Reindeer Moss Eater © (01.09.04 15:29) [12]
И чего, помогает ?
← →
Rule © (2004-09-01 15:32) [14]Reindeer Moss Eater © (01.09.04 15:29) [12]
щас попробую
← →
Rule © (2004-09-01 15:38) [15]А тогда вопрос, чес сбрасывется, дбфвьювер сбрасываеть не хочет, а дбдесктопе нет даже такой возможности, ручкам чтоли отсчитывать байты ?
← →
Reindeer Moss Eater © (2004-09-01 15:43) [16]В компьютере есть процессор.
Он умеет считать.
Не надо руками.
← →
Роман Снегирев (2004-09-01 15:48) [17]короче если ты точно знаешь что у тебя кодировка win1251, то просто перепиши 29 байт в значение 87 и BDE будет работать нормально, а вообще я бы посоветывал отказаться от BDE
← →
Rule © (2004-09-01 15:55) [18]Reindeer Moss Eater © (01.09.04 15:43) [16]
:)
Роман Снегирев (01.09.04 15:48) [17]
то просто перепиши 29 байт в значение 87 и BDE будет работать нормально,
на других машинах работает, а на моей нет, вот я и говорю что аномалия, кончено я согласен что BDE не блеск, но под рукой ничего другово не было
короче если ты точно знаешь что у тебя кодировка win1251
точно знаю на 100%, при формировании в 1С-ке таблицы я явно указал кодировку
а вообще я ж говорю в моем случае я решение нашел, просто поставил свойство TTabl"a
tableType в ttFoxPro и нормально работает на всех машинах (вот природа такого поведения не совсем понятна, наверное всетаки чемто отличаются у меня эти три таблицы, иначе и быть не может) ...
Всем огромное спасибо за участие и оказаную мне помощь
← →
Роман Снегирев (2004-09-01 16:07) [19]на самом деле DBASE версии до 4 и FoxPro (версии до 2.5) абсолютно ничем не отличаются. Кстати я тоже замечал что при установке tableType в ttFoxPro кодировка win1251 лучше читается
← →
Val © (2004-09-01 16:22) [20]>[19] Роман Снегирев (01.09.04 16:07)
> кодировка win1251 _лучше_ читается
крупнее шрифт? ;)
← →
Rule © (2004-09-01 17:01) [21]Val © (01.09.04 16:22) [20]
Нет, проблемм меньше, и кстати разобрался в чем у меня всетаки проблемма была
почемуто у меня BDE ин
← →
Rule © (2004-09-01 17:03) [22]продолжение:
не реагировала на изменения,которые я вносил в настройки драйвера на дбейз, а вот на фокспро реагировал и когда я добраюсь к таблице чрезе эти драйвера то все работает, хотя на других машинах что так что так все нормально, тоесть на моей машине накрылся бдешный драйвер на дбез, вот и все ... а я тут трагедию прям устроил :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.057 c