Qt5.2中文测试

4 篇文章 0 订阅

 

 环境:Qt5.2+QtCreator3.0+VS2010,并且VS2010安装了sp1的补丁。操作系统Windowsxp。


 

测试源代码:

 

   

    QString s1 = "我是中文1";
    qDebug()<<"s1"<<s1;
 
 
    //只要字符串不需要翻译,请关注这个
    QString s2 = QStringLiteral("我是中文2");
    qDebug()<<"s2"<<s2;
 
    QTextCodec *codec = QTextCodec::codecForLocale();
    QString s3 = codec->toUnicode("我是中文3");
    qDebug()<<"s3"<<s3;
 
 
    QTextCodec *codec2 = QTextCodec::codecForName("utf-8");
    QString s4 = codec2->toUnicode("我是中文4");
    qDebug()<<"s4"<<s4;
 
    QString s5 = QString::fromUtf8("我是中文5");
    qDebug()<<"s5"<<s5;
 
    QString s6 = tr("我是中文6");
    qDebug()<<"s6"<<s6;
 
    ui->label->setText(s1);
    ui->label_1->setText(s2);
    ui->label_2->setText(s3);
    ui->label_3->setText(s4);
    ui->label_4->setText(s5);
    ui->label_5->setText(s6);


测试一

测试环境:

执行字符集  设置了 #pragma execution_character_set("utf-8")

源码字符集utf-8,有 BOM

 

测试结果:

s1 "我是中文1"

s2 "我是中文2"

s3 "鎴戞槸涓枃3"

s4 "我是中文4"

s5 "我是中文5"

s6 "我是中文6" 

 

测试二

测试环境:

执行字符集  不设置#pragma execution_character_set("utf-8")

源码字符集utf-8,有 BOM

 

测试结果:

s1 "????????1"

s2 "我是中文2"

s3 "我是中文3"

s4 "????????4"

s5 "????????5"

s6 "????????6" 

 

 

 

 

测试三

测试环境:

执行字符集  不设置#pragma execution_character_set("utf-8")

源码字符集utf-8,无 BOM

 

测试结果:

 

s1 "我是中文1"

s2 "鎴戞槸涓枃2"

s3 "鎴戞槸涓枃3"

s4 "我是中文4"

s5 "我是中文5"

s6 "我是中文6" 

 

测试四

测试环境:

执行字符集  设置了#pragma execution_character_set("utf-8")

源码字符集utf-8,无 BOM

 

测试结果:

 

s1 "鎴戞槸涓枃1"

s2 "鎴戞槸涓枃2"

s3 "閹存垶妲告稉顓熸瀮3"

s4 "鎴戞槸涓枃4"

s5 "鎴戞槸涓枃5"

s6 "鎴戞槸涓枃6" 


      从上面的测试可以看出,在保存源代码时字符集最好是utf-8,有BOM,并且设置了执行字符集( #pragma execution_character_set("utf-8")   ),这样就能比较好的支持中文了。 

      当然也要确保你的VS2010打了sp1的补丁,否则测试结果就都不一样了。因为没打sp1补丁的vs2010,不识别( #pragma execution_character_set("utf-8")   )的设置。

补充: 上面测试一的s3还是乱码,是因为我们设置的是QTextCodec::codecForLocale();,如果改为QTextCodec::codecForName("utf-8");,则是正常显示。如下所示。

测试环境:

执行字符集  设置了 #pragma execution_character_set("utf-8")

源码字符集utf-8,有 BOM

    QTextCodec *codec = QTextCodec::codecForName("utf-8");
    QString s3 = codec->toUnicode("我是中文3");
    qDebug()<<"s3"<<s3;
 
结果:
   ss "我是中文ss" 


 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
//qt单元测试用法,qt测试例子,qt单元测试demo,qt单元测试简单例子,qt单元测试例程,qt单元测试简单例子, qt5单元测试例子,qt5单元测试代码,qt5单元测试工程例子,测试运行ok //首先,用标准的qt测试单元导向,建立一个变准的qt单元测试程序框架,建立话好,能编译通过并且执行的。 float tst_untitledtest::calculate_area_of_circle(float r)//计算圆的面积的函数 { return r*r*3.1415926; } void tst_untitledtest::testA() { QFETCH(float,inputR);//QFETCH用户获取testA_data的数据,inputR是浮点型的。 QFETCH(float,resltArea);//resltArea是浮点型的,这两个参数都是在testA_data里面定义的 //QCOMPARE(input,rslt); QCOMPARE(calculate_area_of_circle(inputR), resltArea);//测试结果比较,用宏QCOMPARE。可以直接调用inputR和resltArea。 qDebug()<<"============test ok=============="; } void tst_untitledtest::testA_data() { QTest::addColumn ("inputR");//定义测试数据,添加测试数据,添加一列,此列是输入 QTest::addColumn ("resltArea");//定义测试数据,添加测试数据,添加测试数据,定义一列,是结果 QTest::newRow("a")<<1.0f<<3.14159f;//添加一行测试数据,每行就是每一次测试,对应上面定义的input和result QTest::newRow("b")<<2.0f<<5.0f;//添加一行测试数据,每行就是每一次测试,对应上面定义的input和result QTest::newRow("c")<<3.0f<<6.0f;//添加一行测试数据,每行就是每一次测试,对应上面定义的input和result,所以这是3次第是,3 row } /** ——————————— | inputR | resultArea| __________________________ | a | 1.0f | 5.0f | __________________________ | b | 2.0f | 5.0f | __________________________ | c | 3.0f | 6.0f | -------------------------- **/ 运行结果: ********* Start testing of tst_untitledtest ********* Config: Using QtTest library 5.5.1, Qt 5.5.1 (x86_64-little_endian-llp64 shared (dynamic) debug build; by MSVC 2013) PASS : tst_untitledtest::initTestCase() QDEBUG : tst_untitledtest::testA(a) ============test ok============== PASS : tst_untitledtest::testA(a) FAIL! : tst_untitledtest::testA(b) Compared floats are not the same (fuzzy compare) Actual (calculate_area_of_circle(inputR)): 12.5664 Expected (resltArea) : 5 tst_tst_untitledtest.cpp(36) : failure location FAIL! : tst_untitledtest::testA(c) Compared floats are not the same (fuzzy compare) Actual (calculate_area_of_circle(inputR)): 28.2743 Expected (resltArea) : 6 tst_tst_untitledtest.cpp(36) : failure location PASS : tst_untitledtest::cleanupTestCase() Totals: 3 passed, 2 failed, 0 skipped, 0 blacklisted ********* Finished testing of tst_untitledtest *********

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值