qt 汉字显示

运行环境windows,  编辑语言环境:utf-8  + rom 

测试代码:

#include <QCoreApplication>
#include <iostream>
#include <QString>
#include <QDebug>

#pragma execution_character_set("utf-8")

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    {
        QString str("你好");
        qDebug()  <<1 << "==>" << str;
        std::cout <<2 << "==>" << str.toStdString() << std::endl;
        std::cout <<3 << "==>" << str.toLocal8Bit().toStdString() << std::endl;
        printf("4 ==>%s\n", str.toStdString().c_str());
        printf("5 ==>%s\n\n", str.toLocal8Bit().toStdString().c_str());
    }

    {
        QString str = QString::fromUtf8("我很好");
        qDebug()  <<1 << "==>" << str;
        std::cout <<2 << "==>" << str.toStdString() << std::endl;
        std::cout <<3 << "==>" << str.toLocal8Bit().toStdString() << std::endl;
        printf("4 ==>%s\n", str.toStdString().c_str());
        printf("5 ==>%s\n\n", str.toLocal8Bit().toStdString().c_str());
    }

    return a.exec();
}

  结果显示:

1 ==> "你好"
2==>浣犲ソ
3==>你好
4 ==>浣犲ソ
5 ==>你好

1 ==> "我很好"
2==>鎴戝緢濂
3==>我很好
4 ==>鎴戝緢濂?
5 ==>我很好

 

 

如果不加编译器字符控制:

 1 #include <QCoreApplication>
 2 #include <iostream>
 3 #include <QString>
 4 #include <QDebug>
 5 
 6 //#pragma execution_character_set("utf-8")
 7 
 8 int main(int argc, char *argv[])
 9 {
10     QCoreApplication a(argc, argv);
11 
12 
13     printf("测试开始了 \n\n");
14     std::string str("这是一个std::string");
15     {
16         printf(" str1 ---> %s\n", str.c_str());
17         QString str2Str;
18         str2Str = QString::fromLocal8Bit(str.c_str());
19         printf(" str2 ---> %s\n", str2Str.toStdString().c_str());
20         printf(" str3 ---> %s\n\n", str2Str.toLocal8Bit().toStdString().c_str());
21     }
22 
23     {
24         QString str("你好");
25         qDebug()  <<1 << "==>" << str;
26         std::cout <<2 << "==>" << str.toStdString() << std::endl;
27         std::cout <<3 << "==>" << str.toLocal8Bit().toStdString() << std::endl;
28         printf("4 ==>%s\n", str.toStdString().c_str());
29         printf("5 ==>%s\n\n", str.toLocal8Bit().toStdString().c_str());
30     }
31 
32     {
33         QString str = QString::fromUtf8("我很好");
34         qDebug()  <<1 << "==>" << str;
35         std::cout <<2 << "==>" << str.toStdString() << std::endl;
36         std::cout <<3 << "==>" << str.toLocal8Bit().toStdString() << std::endl;
37         printf("4 ==>%s\n", str.toStdString().c_str());
38         printf("5 ==>%s\n\n", str.toLocal8Bit().toStdString().c_str());
39     }
40 
41     {
42         QString str = QStringLiteral("我很好");
43         qDebug()  <<1 << "==>" << str;
44         std::cout <<2 << "==>" << str.toStdString() << std::endl;
45         std::cout <<3 << "==>" << str.toLocal8Bit().toStdString() << std::endl;
46         printf("4 ==>%s\n", str.toStdString().c_str());
47         printf("5 ==>%s\n\n", str.toLocal8Bit().toStdString().c_str());
48     }
49 
50 
51     return a.exec();
52 }

结果:

 1 测试开始了
 2 
 3  str1 ---> 这是一个std::string
 4  str2 ---> 杩欐槸涓€涓猻td::string
 5  str3 ---> 这是一个std::string
 6 
 7 1 ==> "????"
 8 2==>锟斤拷锟斤拷
 9 3==>????
10 4 ==>锟斤拷锟斤拷
11 5 ==>????
12 
13 1 ==> "????"
14 2==>锟揭很猴拷
15 3==>????
16 4 ==>锟揭很猴拷
17 5 ==>????
18 
19 1 ==> "我很好"
20 2==>鎴戝緢濂
21 3==>我很好
22 4 ==>鎴戝緢濂?
23 5 ==>我很好

 

posted on 2022-08-08 16:39  金凯旋  阅读(82)  评论(0编辑  收藏  举报

导航