Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ADO и досовская кодировка, ADO и досовская кодировка  
:(
    Опции темы
Mikka85
Дата 10.5.2007, 04:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 30.3.2007

Репутация: нет
Всего: нет



Есть таблица  dbf. Использую - ADO.  Все русские буквы  отображает кракозябрами.
Как решить проблему с досовской кодировкой ? Спасибо
PM MAIL   Вверх
bas
Дата 10.5.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Значение 30-го байта, который отвечает за используемую кодировку: $65 - Win, $26 - DOS rus , $00  какое?

Это сообщение отредактировал(а) bas - 10.5.2007, 17:44
PM MAIL   Вверх
yours-tester
Дата 14.6.2007, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 6.2.2005

Репутация: нет
Всего: нет



У меня такая же проблема. 

Microsof DataGrig Control 6.0 (SP5) (OLEDB)
     + Microsoft ADO Data Control 6.0 (SP4) (OLEDB)
ConnectionString:
 "Driver={Microsoft dBASE Driver (*.dbf)}; DriverID=277; Dbq=d:\\docs\\work\\vc++\\tempbases"
RecordSource: Table1

Русскиие буквы отображает кракозяброй. Чем посмотреть этот самый тридцатый байт не знаю.
Не писать же для этого специально программу?

Но вот DBFView - плагин для Far правильно отбражает базу когда выбираю WIN кодировку...

Какие дальше могут быть действия, чтобы решить проблему?

PM MAIL   Вверх
yours-tester
Дата 15.6.2007, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 6.2.2005

Репутация: нет
Всего: нет



посмотрел я эти байты (оказалось встроенный вьювер Far умеет показывать файлы в 16тиричном виде, отсчет с 0) вообщем и 29 и 30 и 31 байты все имеют значение 0x00, только 28 единичка.
Наверное 1С 7.0 в которой был создан и использован это файл справочника, не использует этот байт для указания кодовой страницы, оно ей нафиг не надо.

Что дальше мне надо править каким то образом файл?  или можно каким либо образом объяснить ADO что надо использовать такую то конкретную кодовую страницу?

PM MAIL   Вверх
jonie
Дата 15.6.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 4
Всего: 118



может конвертить  "на лету" самим? (пологаю что Far) делает так...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
yours-tester
Дата 15.6.2007, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 6.2.2005

Репутация: нет
Всего: нет



jonie, ты сам то понял что сказал? Как ты это себе представляешь?

А плагин DBFView, вряд ли использует ADO для своих задач
PM MAIL   Вверх
yours-tester
Дата 15.6.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 6.2.2005

Репутация: нет
Всего: нет



Короче говоря нашел я ещё один замечательный плагин для фара
HexEditor от Александра Пахотина, рекомендую
http://plugring.farmanager.com/cgi-bin/dow...0&Draw=List

С помощью этого шестнадцатеричного эдитора подправил в файлике  с базой
этот самый 29й а за одно на всякий случай и 30й и 28й байты. Попробовал три варианта
0хС9, 0х65, 0х26.  Но проблемы это не решило, всё равно в DBGrid кракозябра...

Ну может кто нибудь писал чего нибудь для работы с dbf через ADO? 

Может через коннект стринг можно драйверу насильно кодовую страницу указать?

Добавлено через 12 минут и 4 секунды
Кстати DBFView почему то считает что мой файл формата DBase III,
а судя по тому что написано здесь:

http://www.geocities.com/geoff_wass/dBASE/.../FAQ/qformt.htm

29й байт стал использоваться как Language Driver ID только DBase IV не раньше

....
PM MAIL   Вверх
jonie
Дата 15.6.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 4
Всего: 118



наткнулся в поисках на пару замечаний
Цитата

я исправляю так (Microsoft dBase driver (*.dbf)):
HKEY_Local_Machine\Software\Microsoft\Jet\4.0\Engines\XBase:
DataCodePage: OEM -> ANSI

http://www.sql.ru/forum/actualthread.aspx?...&tid=180672
http://www.sql.ru/forum/actualthread.aspx?...&tid=235081

ну и вообще порыскай там...
а насчет HEX редакторов так их море.... HIEW решает 8)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
yours-tester
  Дата 16.6.2007, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 6.2.2005

Репутация: нет
Всего: нет



Спасибо jonie.... 

Надо же по твоей ссылке нашел решение проблемы

Было 
Можно:
HKLM\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase\DataCodePage - OEM

поменял на

Можно:
HKLM\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase\DataCodePage - ANSI

Всё стало на свои места, кракозябры больше нет.

Только уж очень мне всё это шаманство напоминает, какуя связь драйвер находит между аббревиатурами OEM и ANSI  и кодовыми страницами WIN1251 или CP866?
 
Может ли кто нибудь это разьяснить на уровне сознательного эго?


PM MAIL   Вверх
jonie
Дата 16.6.2007, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 4
Всего: 118



OEM - это кодировка, используемая в DOS окнах (ака консоль) в винде. У нас это cp866
ANSI - это то что в винде используется. У нас CP1251.
введено я так понимаю для "удобства абстракции"......т.е. на какой-нить беларусской винда это будут уже "слинкованы" с другими cpXXXX

Это сообщение отредактировал(а) jonie - 16.6.2007, 12:15


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Pumer
Дата 13.5.2010, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 20.1.2008

Репутация: нет
Всего: нет



Можно открыть DBF файл в программе DBFNavigator.
Затем: Файл->Сменить кодировку и выбрать Dos -> Win или Win -> Dos. Зависит от того из какого в какой формат требуется преобразовать базу.
После чего сохраняем базу и пользуемся преобразованной базой.
Вот smile
PM MAIL   Вверх
Данкинг
Дата 13.5.2010, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Цитата(Pumer @  13.5.2010,  12:58 Найти цитируемый пост)
Можно открыть DBF файл в программе DBFNavigator.

А ещё можно поставить FoxPro и перекодировать естественным образом!

Это сообщение отредактировал(а) Данкинг - 13.5.2010, 14:18


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.