最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

QT5.2中文乱码解决问题

来源:动视网 责编:小采 时间:2020-11-09 15:29:36
文档

QT5.2中文乱码解决问题

QT5.2中文乱码解决问题:总结: 之前Qt4写的代码用QTextCodec::codecForTr()来解决中文输入问题,为了防止错误的滥用,在Qt5中已经取消了这个方法。 Qt5VS2010 中文乱码问题的解决:【请记住VS2010必须打普定vs2010sp1,下面代码才有效】 #if _MSC_VER = 1600
推荐度:
导读QT5.2中文乱码解决问题:总结: 之前Qt4写的代码用QTextCodec::codecForTr()来解决中文输入问题,为了防止错误的滥用,在Qt5中已经取消了这个方法。 Qt5VS2010 中文乱码问题的解决:【请记住VS2010必须打普定vs2010sp1,下面代码才有效】 #if _MSC_VER = 1600

简单的说,从Qt5开始,源代码就是默认UTF8编码的。

当然,VC2010编辑器对带BOM的UTF8也是认识,只可惜VC2010编译器根本承认它是UTF8!

在继续看官方论坛的回复:

You can write a simple example like this

  1. You can write a simple example like this
  2. #include
  3. #include
  4. #if _MSC_VER >= 1600
  5. #pragma execution_character_set("utf-8")
  6. #endif
  7. int main(int argc, char *argv[])
  8. {
  9. QApplication a(argc, argv);
  10. QLabel label("???ó??ń??");
  11. label.show();
  12. return a.exec();
  13. }
  14. If other people can reproduce your problem, you can file a bug.

If other people can reproduce your problem, you can file a bug.

较完整的解决方案(增加了Qt4/Qt5和非VC环境的判断):

  1. // Coding: UTF-8(BOM)
  2. #if defined(_MSC_VER) && (_MSC_VER >= 1600)
  3. # pragma execution_character_set("utf-8")
  4. #endif
  5. #include
  6. #include
  7. #include
  8. int main(int argc, char* argv[])
  9. {
  10. QApplication app(argc, argv);
  11. #if QT_VERSION < QT_VERSION_CHECK(5,0,0)
  12. #if defined(_MSC_VER) && (_MSC_VER < 1600)
  13. QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030-0"));
  14. #else
  15. QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
  16. #endif
  17. #endif
  18. QLabel *label = new QLabel(QObject::tr("你好!"));
  19. label->show();
  20. return app.exec();
  21. }

另外:Qt4/Qt5/Linux: 只要是默认的UTF8环境, 应该都没问题

其实这个问题不是Qt特有的, 追根溯源还是C/C++和编译器的问题.即使是支持UTF16的Java也同样难逃此问题。

文档

QT5.2中文乱码解决问题

QT5.2中文乱码解决问题:总结: 之前Qt4写的代码用QTextCodec::codecForTr()来解决中文输入问题,为了防止错误的滥用,在Qt5中已经取消了这个方法。 Qt5VS2010 中文乱码问题的解决:【请记住VS2010必须打普定vs2010sp1,下面代码才有效】 #if _MSC_VER = 1600
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top