m_codec = QTextCodec::codecForName("windows-1252");
m_codec = QTextCodec::codecForName("UTF-8");
#ifdef Q_OS_WIN32 m_codec = QTextCodec::codecForName("windows-1252"); //Настраиваем кодек#endif#ifdef Q_OS_LINUX m_codec = QTextCodec::codecForName("UTF-8");#endif.............char sz[1024];to_RUS( m_pINIfile->value( sKeyName, sDefault ).toString(), sz ); //тут считываем русскую строку из iniQString sReturnedString = QString::fromLocal8Bit( sz ); //В винде здесь уж русская строка, в Линухе - кракозябры.............void to_RUS( QString s, char *ascii ){QByteArray ba = m_codec->fromUnicode(s);memcpy( ascii,ba.data(),ba.size() );ascii[ba.size()] = 0;}
2. Если кодировка локали UTF-8, то использовать fromLocal8Bit() походу неправильно.
m_codec = QTextCodec::codecForName( "windows-1252" );QString val = m_codec->toUnicode( m_pINIfile->value( sKeyName, sDefault ).toByteArray() );
#include <QCoreApplication>#include <QSettings>#include <QTextCodec>#include <QDebug>int main(int argc, char *argv[]){ QCoreApplication app(argc, argv); qDebug("Start..."); QSettings s( "Company", "tst" ); QTextCodec *codec = QTextCodec::codecForName( "windows-1251" ); QVariant v = s.value( "value1", "Default value1" ); QString val = codec->toUnicode( v.toByteArray() ); qDebug() << val; return 0;}
m_codec = QTextCodec::codecForName("windows-1251");*sReturnedString = m_codec->toUnicode( m_pINIfile->value( sKeyName, sDefault ).toByteArray() );