• 9036阅读
  • 3回复

[提问]QSettings读取中文 [复制链接]

上一主题 下一主题
离线hover_sky
 

只看楼主 倒序阅读 楼主  发表于: 2010-04-02
QSettings读取中文
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
test.txt
[测试]
Beta=您好english
[test]
beta=您好



    QString myfile = "./test.txt";
    QSettings *mySetting = new QSettings(myfile,QSettings::IniFormat);
    mySetting->setIniCodec(QTextCodec::codecForName("GB2312"));
    QString item="测试";
    item.append("/Beta");
    qDebug()<<item;
    QString myArray = mySetting->value(item).toString();
    qDebug()<<myArray;
    item="test";
    item.append("/Beta");
    qDebug()<<item;
    myArray = mySetting->value(item).toString();
    qDebug()<<myArray;

结果
Starting D:\qt\sett\debug\sett.exe...
"测试/Beta"
""
"test/Beta"
"您好"

为什么不能读取[测试]的数据?
离线午小夜

只看该作者 1楼 发表于: 2010-04-02
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
    QFile file("test.ini");
    if(!file.exists())
    {
        QSettings* s = new QSettings(file.fileName(),QSettings::IniFormat);
        s->setIniCodec(QTextCodec::codecForName("GB2312"));
        s->setValue(QString("测试/Beta"),QString("您好,China!"));
        s->setValue(QString("Test/Beta"),QString("Hello,China!"));
    }
    else
    {
        QSettings* s = new QSettings(file.fileName(),QSettings::IniFormat);
        s->setIniCodec(QTextCodec::codecForName("GB2312"));
        qDebug()<<s->value(QString("测试/Beta")).toString();
        qDebug()<<s->value(QString("Test/Beta")).toString();
    }

运行2次程序后,你看看test.ini里边是什么内容.
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线hover_sky

只看该作者 2楼 发表于: 2010-04-02
[%U6D4B%U8BD5]
Beta="您好,China!"

[Test]
Beta="Hello,China!"

这是开始的时候文件不存在,之后qt程序创建的test文件的内容。

输出结果
D:\qt\sett\debug\sett.exe exited with code 0
Starting D:\qt\sett\debug\sett.exe...
"您好,China!"
"Hello,China!"
离线hover_sky

只看该作者 3楼 发表于: 2010-04-02
D:\qt\sett\debug\sett.exe exited with code 0
Starting D:\qt\sett\debug\sett.exe...
""
"您好"

这是开始是存在test文件的输出结果

test文件的内容
[测试]
Beta=您好english
[test]
beta=您好
快速回复
限100 字节
 
上一个 下一个