Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: Artems от Октябрь 21, 2008, 07:27



Название: кодировка в QSettings
Отправлено: 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 кодировку?


Название: Re: кодировка в QSettings
Отправлено: DarkPhoenix от Октябрь 21, 2008, 09:43
Не уверен, но думаю дело в кодировке приложения. указанной при старте программы.
пример:
Код:
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));


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


так пробовал, но к сожалению данный код при работе с QSettings ничего не меняет.


Название: Re: кодировка в QSettings
Отправлено: spirit от Октябрь 21, 2008, 11:55
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP-1251"));
?


Название: Re: кодировка в QSettings
Отправлено: Artems от Октябрь 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());