qt creator 中 msvc 中文乱码是因编码不匹配:msvc 默认 gbk 输出,而 qt creator 默认 utf-8 解码。推荐启用“force utf-8 msvc output”并设工具文本编码为 utf-8;若无效,则改用系统编码解码。

输出窗口刷屏报错,不是代码写错了,而是 Qt Creator 没法正确解析 MSVC 编译器吐出来的中文诊断信息——它把 GBK 编码的字节当 UTF-8 解了,结果全变成“娉ㄦ剰”“閿欒”这类乱码。这不是编译失败,是显示失败;你看到的“错误”,可能根本不存在。
为什么 MSVC 输出在 Qt Creator 里全是乱码?
Windows 简体中文系统下,MSVC(如 cl.exe)默认用 GBK(代码页 936)输出 error C2065、note: including file 这类提示。而 Qt Creator 9+ 默认按 UTF-8 解码终端流。GBK 字节序列被强行 UTF-8 解析,必然错位。比如 "你好" 的 GBK 字节 \xC4\xE3\xBA\xC3 被当 UTF-8 解,就变成“浣犲”。
常见现象包括:
- 报错行首出现“娉ㄦ剰”(应为“注意”)
- 文件路径显示为“D:\Qt\6.11.0\msvc2022_64\include\QtGui\qguiapplication.h”但实际路径是对的
- 明明没语法错误,却提示“未找到标识符”等看似荒谬的错误
怎么让 Qt Creator 正确显示 MSVC 中文输出?
核心思路:统一编码链路。有两条互斥路径可选,别混用:
路径一(推荐):强制 MSVC 输出 UTF-8
Qt Creator 18.0.2 Windows x86_64 历史版本安装包,适合需要旧版本 IDE、旧项目兼容、Qt/C++ 项目维护、构建套件配置和调试环境回退的用户使用。
- 进入
工具 → 选项 → 构建套件 → 环境 - 勾选
Force UTF-8 MSVC output - 同时确保
工具 → 选项 → 环境 → Interface → Text codec for tools设为UTF-8 - 重启 Qt Creator 生效
路径二:保持 MSVC 原生 GBK,让 Qt Creator 切换解码方式
- 取消勾选
Force UTF-8 MSVC output - 将
Text codec for tools改为System - 将
Interface → Language设为系统语言(非简体中文)
注意:Force UTF-8 MSVC output 在 Qt Creator 12+ 中更稳定;若用旧版(如 9.x),部分 MSVC 版本可能不响应该开关,此时必须走路径二。
乱码掩盖了真实错误?先确认是不是真报错
乱码本身会干扰判断,但更危险的是:它可能让你忽略真正的构建失败。请做三件事:
- 打开构建目录(如
build-myproject-Desktop_Qt_6_11_0_MSVC2022_64bit-Debug),直接查看CMakeFiles/CMakeOutput.log和CMakeFiles/CMakeError.log,这两份日志永远是原始编码,无乱码 - 在 Windows 终端(cmd 或 PowerShell)中手动运行
cmake --build . --config Debug,观察原生命令行输出是否正常 - 检查 Qt Creator 左下角状态栏的构建状态图标:如果是红色叉号且伴随
Failed,才是真失败;如果只是输出窗口满屏乱码但状态栏显示Succeeded,说明只是显示问题
其他容易被忽略的干扰项
即使解决了乱码,以下几点仍可能导致输出异常:
-
QT_LOGGING_RULES="*.debug=false"会静默所有qDebug(),在统信 UOS 或深度桌面环境下尤其常见,需检查项目构建环境或/etc/X11/Xsession.d/00deepin-dde-env - 杀毒软件(如 360、火绒)可能劫持 MSVC 的子进程输出流,导致 Qt Creator 收不到完整 stdout/stderr,表现为输出中断或提前结束
- 项目中若使用了自定义
message()或add_compile_definitions()插入中文宏,而源文件本身不是 UTF-8 无 BOM 保存,也会触发二次乱码
真正棘手的从来不是乱码本身,而是乱码让你误以为问题出在代码上,从而浪费几小时去查一个根本不存在的“未声明变量”。先确认输出是否可信,再动代码。










