none
VS2013调试程序时查看QString变量值为乱码 RRS feed

  • 问题

  •       在同事机器上用VS2013调试程序时查看QString变量值为乱码。因为VC调试器只能正常显示ANSI字符串及UNICODE字符串, 而UTF-8字符串及其他格式则无法显示,调试时只需要将要显示的字符串拉到Watch中,并在变量后面添加,s8即可显示。所以我在变量后加了,s8,结果还是乱码,如下图:

          因为我自己机器上的vs2013调试程序是可以正常查看QString变量值,我就把自己机器上的vs2013安装目录下的
    Microsoft Visual Studio 12.0\Common7\Packages\Debugger\autoexp.dat拷贝给同事,覆盖他的机器上的autoexp.dat,结果还是不行。


    前无古人,后无来者

    2019年2月12日 8:47

全部回复

  • 你好,

    感谢在MSDN论坛发帖提问。

    >>VS2013调试程序时查看QString变量值为乱码

    设置QString默认采用的编码。一般来说就是源代码是GBK,就用GBK,源代码是UTF-8就用UTF-8。但有一个例外,如果你保存成了带BOM的UTF-8而且用的微软的cl编译器,此时仍是GBK.
    你可以通过以下代码来解决这个问题:
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

    有关更多细节,你可以参考以下链接:https://blog.csdn.net/u014066037/article/details/72832160
    https://blog.csdn.net/ayang1986/article/details/78204467

    如果您能提供简单的程序代码小样,让我们来重现你的问题,我们会为您提供更好的帮助。

    Best wishes,

    Jeanine Zhang
    2019年2月14日 6:28
    版主