安之海 2025-01-01 21:21 采纳率: 25%
浏览 27

clion里中文乱码和非乱码共存如何解决


        connect(button_login,&QPushButton::clicked ,[=]{
            //5.获取账号密码
            QString account = accountEdit->text();
            QString password = passwordEdit->text();

            if ("admin" == account && "123" == password){
                qDebug() <<"蔡徐坤";
                cout<<"登录成功";
            }else{
                qDebug()<<"马保国";
                cout<<"登录失败";
            }
        });

默认运行情况,控制台和代码都是UTF8

qdebug乱码

img

开启下图设置后

img

qdebug可以显示,但cout又无法显示

img

这个如何解决

  • 写回答

2条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你给出的描述和截图来看,你在使用CLion进行Qt开发时遇到了中文乱码和非乱码共存的问题。这个问题可能涉及到编码设置、控制台输出等多个方面。以下是一些可能的解决方案:

    1. 设置正确的编码

    确保你的源代码文件是以UTF-8或者其他合适的编码保存的。在CLion中,你可以在右下角的状态栏查看和更改当前文件的编码。

    2. 控制台输出设置

    在Qt中,你可能需要设置控制台以正确的编码显示输出。你可以尝试在程序的开始处添加以下代码来设置控制台输出编码:

    #ifdef Q_OS_WIN
        QTextCodec *codec = QTextCodec::codecForName("UTF-8");
        QCoreApplication::setCodecForLocale(codec);
    #endif
    

    这段代码会在Windows操作系统上设置Qt应用程序的本地编码为UTF-8。

    3. 检查字符串的获取和处理

    在你的代码中,你是如何使用qDebug()cout输出中文的?确保你在获取和显示字符串时使用了正确的编码。例如,如果你从某个控件中获取文本,确保该控件是以正确的编码显示文本的。

    4. 环境变量设置

    从提供的截图来看,你设置了环境变量QT_ASSUME_STDERR_HAS_CONSOLE=1。这个环境变量可能会影响控制台输出。尝试移除或更改这个环境变量,看看是否解决了问题。

    5. 检查CLion运行配置

    检查CLion的运行/调试配置,确保一切设置正确。特别是在“运行”部分,确保选择了正确的可执行文件和工作目录。

    6. 重新构建项目

    尝试清理并重新构建你的项目,看看问题是否仍然存在。

    总结

    乱码问题通常与编码、控制台输出和环境设置有关。根据上述建议,检查并调整你的代码和配置,看看是否能解决你的问题。如果问题仍然存在,可能需要更深入地检查你的代码和环境设置。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月1日