欢迎大家来到IT世界,在知识的湖畔探索吧!
BUG
在QT中,如果编译器是MSVC,默认情况下中文可能出现异常!
比如 “名” 这个字:
QString a="名"; qDebug()<<"名"; QMessageBox::information(NULL,"名","");
欢迎大家来到IT世界,在知识的湖畔探索吧!
以上等等操作都会报错无法编译,错误提示:

欢迎大家来到IT世界,在知识的湖畔探索吧!
继续测试发现“名称”、“名医”、“名著” 等正常,“用户名”等不正常;
“名0”、“名1”等可以正常编译,但输出的是乱码;
再继续测试:
欢迎大家来到IT世界,在知识的湖畔探索吧!QString a="名\n"; qDebug()<<a;
发现输出的结果是:
“名\\n” 这显然不是正确的结果!正确的应为:”名\n”
多出的这个反斜杠 \ 应该就是导致报错的原因!
实际上,并不单单是“名”这个字是这样,单个汉字大多有这个情况!
解决方法
方法一:使用Clang编译器或者MinGW编译器(推荐Clang)
方法二:
1、点击 编辑 菜单,选择Select Encoding,如图:
在弹出的对话框中,选择“
GBK/CP936/MS936/windows-936”,然后点击“按编码保存”:
此时编译不会报错了,但中文输出显示的是乱码!
2、在文件头加入一行代码:
#pragma execution_character_set("utf-8")
如图:
这样就可以了!
注意:MSVC2010以后的版本才支持!
可以加入判断,写成这样:
欢迎大家来到IT世界,在知识的湖畔探索吧!#if _MSC_VER >= 1600 // >=MSVC2010 #pragma execution_character_set("utf-8") #endif
附一张MSVC编译器版本对照表:
MSC 1.0 _MSC_VER == 100 MSC 2.0 _MSC_VER == 200 MSC 3.0 _MSC_VER == 300 MSC 4.0 _MSC_VER == 400 MSC 5.0 _MSC_VER == 500 MSC 6.0 _MSC_VER == 600 MSC 7.0 _MSC_VER == 700 MSVC++ 1.0 _MSC_VER == 800 MSVC++ 2.0 _MSC_VER == 900 MSVC++ 4.0 _MSC_VER == 1000 (Developer Studio 4.0) MSVC++ 4.2 _MSC_VER == 1020 (Developer Studio 4.2) MSVC++ 5.0 _MSC_VER == 1100 (Visual Studio 97 version 5.0) MSVC++ 6.0 _MSC_VER == 1200 (Visual Studio 6.0 version 6.0) MSVC++ 7.0 _MSC_VER == 1300 (Visual Studio .NET 2002 version 7.0) MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio .NET 2003 version 7.1) MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005 version 8.0) MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008 version 9.0) MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010 version 10.0) MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012 version 11.0) MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013 version 12.0) MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015 version 14.0) MSVC++ 14.1 _MSC_VER == 1910 (Visual Studio 2017 version 15.0) MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3) MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5) MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6) MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7) MSVC++ 14.15 _MSC_VER == 1915 (Visual Studio 2017 version 15.8) MSVC++ 14.16 _MSC_VER == 1916 (Visual Studio 2017 version 15.9) MSVC++ 14.2 _MSC_VER == 1920 (Visual Studio 2019 Version 16.0) MSVC++ 14.21 _MSC_VER == 1921 (Visual Studio 2019 Version 16.1) MSVC++ 14.22 _MSC_VER == 1922 (Visual Studio 2019 Version 16.2)
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/112898.html