Название: [РЕШЕНО]Русские символы при обащении к DBF Отправлено: 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 ничего не помогает. Подскажите пожалуйста, что с этим можно сделать. Название: Re: Русские символы при обащении к DBF Отправлено: vvvxmag от Март 03, 2011, 09:43 В какой бы кодировке я не сохранял файл DBF
query.value(source_record.indexOf("name_iz")).toString(); возвращает одно и тоже Название: Re: Русские символы при обащении к DBF Отправлено: Пантер от Март 03, 2011, 10:44 Там, вроде, в строке коннекта нужно указать кодировку.
Название: Re: Русские символы при обащении к DBF Отправлено: vvvxmag от Март 03, 2011, 14:18 Я догадываюсь что это нужно сделать, но не нашел как.
Кучу сайтов перерыл, но не нашел. Если есть пример connection string поделитесь. Название: Re: Русские символы при обащении к DBF Отправлено: Пантер от Март 03, 2011, 14:42 Давно это было, уже не помню. Гугление привело к DriverID, но дальше что-то глухо.
Название: Re: Русские символы при обащении к DBF Отправлено: vvvxmag от Март 04, 2011, 07:26 Помогло следующее:
изменил значение ключа в реестре HKLM\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase\DataCodePage - ANSI до этого стояло OEM. Всем спасибо за внимание. |