VS2017+Qt5.9 中文乱码

Qt读写文件操作也会遇到类似问题,具体的我没操作

本次实验是在Qt控制台程序中测试代码。整个过程很漫长,反正我就一种一种方法试,我总相信“有问题就一定会有人解决”。

        如果简单的调用qDebug()函数输出信息(添加#include头文件,但是VS中没有补全提示(仅#include)),则会出现中文不能正常显示,会以'?'代替中文字符。如果将QString对象用qDebug()像cout那样输出还不能去掉字符串两端的引号。

VS2017+Qt5.9 中文乱码_第1张图片

        然后我baidu了一下,看到一大部分程序猿说修改什么什么编码格式,或者其他什么,反正我也没看太懂,然后无意间看了有一篇给出了很好的解决方案(也有缺点(不过可以忽略))。

       有一种说法是在qDebug()<

VS2017+Qt5.9 中文乱码_第2张图片

然后呢,toUtf8()我也试了一下,依然没有办法输出中文。

VS2017+Qt5.9 中文乱码_第3张图片

接下来就是用字符串匹配的方式传参数进去使用qDebug(“%s”,qPrintable(QString string))。我以为这个就可以,RBL。

VS2017+Qt5.9 中文乱码_第4张图片

此时我感觉我已经是一种死当作活医的心态了。我将QString类型的字符串转成const char *类型,然后传参给qDebug()。

VS2017+Qt5.9 中文乱码_第5张图片

直到我快要崩溃的时候,我才看到有网友说要在代码中设置utf8,即添加#pragma execution_character_set("utf-8")  。

VS2017+Qt5.9 中文乱码_第6张图片

上面的6种输出方式最后有4种输出了中文没有乱码。最后……,嗯,行吧,给出正确的四种就行了。

VS2017+Qt5.9 中文乱码_第7张图片

总结一下:

主要就是添加全局代码设置utf8,即#pragma execution_character_set("utf-8")  ,其他的正常输出就好。

缺点:此方法会让C++的cout<

你可能感兴趣的:(计算机)