Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.055 c
3-1094024391
Koala
2004-09-01 11:39
2004.10.03
Клиент-сервер (MIDAS) под Firebird 1.5


6-1090467422
v2
2004-07-22 07:37
2004.10.03
Indy TCP CLient не соединяется с прокси-сервером


4-1092100856
Baloo
2004-08-10 05:20
2004.10.03
Перехватить курсорную клавишу и прибить


3-1093948116
SH
2004-08-31 14:28
2004.10.03
SQL запрос для ADOQuery


1-1095331130
Users
2004-09-16 14:38
2004.10.03
Внедрение в EXE CRC. Проблема с маяком





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский