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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: кодировка в QSettings  (Прочитано 5264 раз)
Artems
Гость
« : Октябрь 21, 2008, 07:27 »

Добрый день!
 есть такой код
Код:
        QSettings settings("C:/bla.ini", QSettings::IniFormat);
QSettings::Status status = settings.status();
settings.beginGroup("myblock");

QVariant v = settings.value("bla");
settings.endGroup();
QVariant::Type t = v.type();
QString s = v.toString();
QByteArray a = s.toLatin1();


return a;
файл "C:/bla.ini" в кодировке виндофс1251 и имеет кириллические символы. На данный момент чтоьы их корректно прочитать приходится делать так:
   QString s = v.toString();
   QByteArray a = s.toLatin1();
а может есть способ задать QSettings кодировку?
Записан
DarkPhoenix
Гость
« Ответ #1 : Октябрь 21, 2008, 09:43 »

Не уверен, но думаю дело в кодировке приложения. указанной при старте программы.
пример:
Код:
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
Записан
Artems
Гость
« Ответ #2 : Октябрь 21, 2008, 11:47 »

Не уверен, но думаю дело в кодировке приложения. указанной при старте программы.
пример:
Код:
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));


так пробовал, но к сожалению данный код при работе с QSettings ничего не меняет.
Записан
spirit
Гость
« Ответ #3 : Октябрь 21, 2008, 11:55 »

Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP-1251"));
?
Записан
Artems
Гость
« Ответ #4 : Октябрь 21, 2008, 12:19 »

Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP-1251"));
?

да кучу разных кодировок уже перепробовал, предварительно пересохраняя в них файл. результат одинаков.
приходится делать так:

   QVariant v = settings.value("bla");

   QString s = v.toString();
//для вынь1251
   s = QString::fromLocal8Bit(s.toLatin1());
//для утф8
   s = QString::fromUtf8(s.toLatin1());
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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