Russian Qt Forum
Ноябрь 24, 2024, 02:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО]Русские символы при обащении к DBF  (Прочитано 7600 раз)
vvvxmag
Гость
« : Март 02, 2011, 16:18 »

открываю БД

QSqlDatabase dbfdb = QSqlDatabase::addDatabase("QODBC", "dbfcon");
   QString dbfDriver;
   dbfDriver = "DRIVER={Microsoft dBase Driver (*.dbf)};FIL={dBase IV;};DefaultDir=c:\\Projects\\petrogold\\Bill\\Data";
   dbfdb.setDatabaseName(dbfDriver);

Кодировка файлов ANSI(CP-1251)

Выполняю запрос
QSqlQuery query.exec("SELECT * FROM goods");
QSqlRecord source_record = query.record();

Далее в пытаюсь получить значение поля содержащего русские символы

query.value(source_record.indexOf("name_iz")).toString();

Возвращаются непонятные символы.

установил
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));

Всячески пытался сконвертировать полученную строку
toLocal8Bit
toLatin1
toUtf8

ничего не помогает.

Подскажите пожалуйста, что с этим можно сделать.
« Последнее редактирование: Март 04, 2011, 07:27 от vvvxmag » Записан
vvvxmag
Гость
« Ответ #1 : Март 03, 2011, 09:43 »

В какой бы кодировке я не сохранял файл DBF
query.value(source_record.indexOf("name_iz")).toString();
возвращает одно и тоже
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Март 03, 2011, 10:44 »

Там, вроде, в строке коннекта нужно указать кодировку.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
vvvxmag
Гость
« Ответ #3 : Март 03, 2011, 14:18 »

Я догадываюсь что это нужно сделать, но не нашел как.
Кучу сайтов перерыл, но не нашел.

Если есть пример connection string поделитесь.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Март 03, 2011, 14:42 »

Давно это было, уже не помню. Гугление привело к DriverID, но дальше что-то глухо.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
vvvxmag
Гость
« Ответ #5 : Март 04, 2011, 07:26 »

Помогло следующее:

изменил значение ключа в реестре

HKLM\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase\DataCodePage - ANSI
до этого стояло OEM.

Всем спасибо за внимание.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 22.