在 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>
#endif
int 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-8
QTextCodec::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;
}