在 Windows 平台上,默认的控制台编码可能不是 UTF-8,这可能会导致中文字符的显示问题。
下面是在 Qt 应用程序中设置中文字体,并确保控制台输出为 UTF-8 编码:
1. Qt 应用程序代码
在 Qt 中,我们可以使用 QApplication
来创建应用程序实例,并且通过 QFont
设置应用程序的字体。为了确保中文字符能够正确显示,可以选择一个常见的中文字体(例如 "Microsoft Yahei"
)。另外,对于 Qt 5 及以下版本,我们还需要设置文本编码为 UTF-8 来确保支持中文字符。
#include <QApplication>
#include <QFont>
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
#include <QTextCodec>
#endifint main(int argc, char *argv[])
{QApplication a(argc, argv);// 设置中文字体a.setFont(QFont("Microsoft Yahei", 9));#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)// 设置本地编码为UTF-8QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
#endif// 启动应用程序return a.exec();
}
2. 控制台设置为 UTF-8 编码
在 Windows 系统中,控制台默认使用的是 GBK
编码(中文 Windows 上)。如果需要在控制台中输出中文并确保字符能够正确显示,可以通过设置控制台的输出编码为 UTF-8 来避免乱码。使用 SetConsoleOutputCP
函数可以实现这一点。
#include <windows.h>int main() {// 设置控制台输出为UTF-8编码SetConsoleOutputCP(CP_UTF8);// 现在可以正常输出中文字符了std::wcout << L"你好,世界!" << std::endl;return 0;
}