木头人398 2024-01-18 15:47 采纳率: 0%
浏览 3

qT5 控制台中文输出成ÄãºÃ£¡ 字符

问题遇到的现象和发生背景

qDebug()输出中文,为GBK格式乱码,类似ÄãºÃ£¡

操作环境、软件版本等信息

windows 11下 Qt5.12.3

尝试过的解决方法

编辑,文本编码保存UTF-8. 工具-行为-文件编码-UTF-8,有无BOM都试过了

我想要达到的结果

源码中打印qDebug()<< "你好";,Qt5.12.3 控制台应用程序输出对应汉字 你好。

  • 写回答

4条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-18 18:08
    关注

    【以下回答由 GPT 生成】

    解决方案:

    1. 首先,确保你的源码文件本身的编码格式是UTF-8。可以在编辑器中确认文件编码格式或者使用其他编码格式转换工具将文件转为UTF-8格式。

    2. 在项目的.pro文件中,添加以下代码,以确保项目使用UTF-8编码:

    cpp CONFIG += utf8

    1. 确保控制台窗口支持中文显示。在Windows系统中,默认的控制台窗口(cmd.exe)是不支持中文显示的。你可以尝试使用其他控制台程序,如PowerShell或ConEmu等,来替代默认的控制台窗口。

    2. 在Qt代码中,使用qInstallMessageHandler函数自定义消息处理器来解决乱码问题。在你的代码的开始位置添加以下代码:

    ```cpp #include #include

    void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) { QByteArray localMsg = msg.toLocal8Bit(); switch (type) { case QtDebugMsg: fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function); break; // 添加其他消息类型的处理,如警告和错误 default: break; } }

    int main() { qInstallMessageHandler(myMessageOutput);

       // 其他代码...
    
       return 0;
    

    } ```

    上述代码中,我们自定义了消息处理器myMessageOutput()来将消息输出到控制台。在fprintf()函数中使用localMsg.constData()将QString转换为本地8位编码的字符串,以解决中文乱码问题。

    1. 编译并运行你的程序。现在,通过qDebug()输出的中文字符串应该能正确显示在控制台中。

    如果以上步骤都不能解决问题,可能是你的操作系统或Qt安装环境的相关设置问题。请确保你的操作系统和Qt的区域设置、语言设置等都正确配置,并按照官方文档进行调查和调整。

    如果你的程序需要中文输入或输出的支持,还可以考虑使用QString的fromUtf8()toUtf8()函数在代码中进行中文字符串编码和解码。

    以上是我推荐的一些解决方案,希望能帮助你解决问题。如果以上方法都不起作用,或者你需要进一步的帮助,请提供更多细节和背景,我会尽力帮助你解决问题。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 1月18日